From nobody Sat Apr 25 13:31:03 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E97F630CD89 for ; Thu, 9 Apr 2026 06:26:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775715993; cv=none; b=WM+n9vDDTno2K5m5GblilQrexvrToEl30BNGGAiMv3mJRDNLMM3pMGaMDjN45q0kHkp7h9zkvAUwv3XZ39Y170ozo/Eg2gxBLf2xhZ3+1Ufrj7er8e6OIg8C2z4QtZ247CwTOWZ2p+/HA70vc4Ox9W0uhiXtYZDzy3QDmO8Bfyo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775715993; c=relaxed/simple; bh=FjAiT5EfT2IuOb3K+Pty499OGRI/ikRMlJtPIYoV5qo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VygZ6Ow6YfM1IMgnFDR5gkoejPQcUk4LuLb+8gKMlKlNMtrb7H5BVpXS0Qmxd+jPKaMMIfw0tjkUNcW0fUvDxotITRsW1tKBFpTday7Jx1kEDOXE/GMatBVE8fYba/Wjs6m+yvVqi4C3GYmF2DBfDCRzjKEkTtGnGYAsWRCJzOs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=BSVzLYry; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RJFDMLF+; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="BSVzLYry"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RJFDMLF+" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 638Nr5l51072651 for ; Thu, 9 Apr 2026 06:26:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=wFzA2omutyD gArQT4+qbnS5naimicpEKr+NS8iMhMfo=; b=BSVzLYryvsrTo/GxIOrH3jOLgjs NNZ9jVNo2pl3yNpZMsIEYFt4AsxJ6l2fqN7V6duPE6gnDvLK8mf8xYgwkOldcW7L NGVabh5IOKlcG1SRwrIetZojLldQePi5+XyPF/hXOjGHFmCt5xm4e+U1lbZlaRpe YR7+ko+p9IIptQeQhfawLcWah2wxOjwx/4Xi3lWyeFCS2iGM/G3xooIRTXX4jea/ yuQzbmc+skof3xAIE+hgxHsXGqQkZRcYZFfy9TulErtorXzerIZKTl9HA81APUPB aREOUhewgrLlADmsEId0KmZixsaeaDmSBj3k6PIj1GyzYoPDLTOQ2uraC/g== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddtb3apgv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Apr 2026 06:26:30 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2b0c30b51bfso11367475ad.0 for ; Wed, 08 Apr 2026 23:26:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775715990; x=1776320790; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wFzA2omutyDgArQT4+qbnS5naimicpEKr+NS8iMhMfo=; b=RJFDMLF+7I1OyM6IrWfE+92ArCADfVQAVB1oa9tKMKABBZjTBPclpLb1LbH4S+U7jM TIyGNqBOqRj6S8OJ3PRkdA/uAml6aNqZ8FUPUT17VzuPQ55Lmvs7OZX2UiO2Zcwh27Hi atoKt4TocFUQw9xWAvcNs7aEV4o9EK4DFOmurY8SGDe5wAYy+ocMJAjtbTgfvUenVBMY x37/cUgIs0YtMd/hF7lsfaWzbGSa6wjVnefIlghBh2DxNBsSmPSrIHM8NF+KPC8NddoH 0OvTlgDSiJSOXrjwo0/a1tNmQFn9wIY59MODXCkwTgeTxQmr6PnB/jw6oCOLUKkapPk2 4iCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775715990; x=1776320790; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wFzA2omutyDgArQT4+qbnS5naimicpEKr+NS8iMhMfo=; b=T6Wctf9zpQAhtXJi1zD/q/zUw6SFvgfEKDEtzzbAHpfCi3Q+E4L1oLZ1aIxdqyrcTN a2zckNAU47JBef0eQrI8wpscpeBeN+9OGTRM3aGIRAIduHRlih2aeGZM7Nhqtj81NKtK 7nk/5/FwJImb/zuF0w5h9vf1/NAMSzLbSJitlRbcH8oikx+qEkdd8qbr5v/gogHxdnrM S5Ni4yUPiIPIFDFFt8Nf3S5Lpl1vPQXeu1VOL2f3U8eVtwQ/7UDyV9K6rWD9LHGpkSzE tcADI5QsLehAWqoeJzOJ3SnRUKdWKp3ueVprslf4y2PbrByKB0hHrKCLrgLcM+cWh6oA NsIg== X-Forwarded-Encrypted: i=1; AJvYcCWgQeOdIP25OdW14ep+Wh273SaQrHXjXRTgPWRCykJ0EOgRDyAlDDn5jKLtrsJUvJdDnolS8rpQemLIwIg=@vger.kernel.org X-Gm-Message-State: AOJu0YyA+CvPQ+lVf7a5i4ClY8QDC38w2llAyT3WOWvDyPaRUzZWH6YJ IzlU5Ct6EkU3iZnGjqSjEy5FzpMpWLYjJcWWaVEX32Xpo9stQLb6A0V1vUxxUkxQVzeWG0ixlLH /Uvhg9DJ/RvommghQ8Qdafi1xI/jkVcAP9q46fFXgLVDb47DHzpRs13rHO8eAs04p3jg= X-Gm-Gg: AeBDievkPA0EF/gDwkOmaGb/9nkAww6syBap37qNhi9GKdahp4iuA4i9cYgVi0HPuUr medEaUrHhVK16rMr0pjoftRx7ujzEJ1bzg5g/bwhd2tMUgXozDVo6iZgCko0ROVp51glt5fIyMA eW7dyvF+/jQzczfHFx5SLDLNFUoyesRJ0e9R7BmpfWTpOvUtYMbaOJ1NMZxUW4VOtCDHi5VnvG8 DQ7dquhuVm4UWYDZ2uuh77jaNoXR5UoeDOigKLv0Xd1ImIsQ9CxQHwFd721wL+CgCt+KEquQZUH 3tv8zhb/NueFfo8BW5drIET71VB+HoFnTGa1RPZTwGF106M1jhdHURQHtpcNcJwOZI2XhupEpP/ NpSo9WkZ0VCKW3oJbNiCX6k5yZep/3QjoiEHSq3e/2z1mcWFP+h8EF3yQqyX5TqNclgxA0YrdVr SDGCeG6idv/3DwwDCh5w== X-Received: by 2002:a17:903:1a90:b0:2ae:8272:deb0 with SMTP id d9443c01a7336-2b2c726c892mr25970615ad.15.1775715989739; Wed, 08 Apr 2026 23:26:29 -0700 (PDT) X-Received: by 2002:a17:903:1a90:b0:2ae:8272:deb0 with SMTP id d9443c01a7336-2b2c726c892mr25970285ad.15.1775715989234; Wed, 08 Apr 2026 23:26:29 -0700 (PDT) Received: from QCOM-SocCW5bzXR.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b2749cbd4dsm220786795ad.76.2026.04.08.23.26.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 23:26:28 -0700 (PDT) From: Jianping Li To: Srinivas Kandagatla , Amol Maheshwari Cc: Arnd Bergmann , Greg Kroah-Hartman , Abel Vesa , Jorge Ramirez-Ortiz , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, ekansh.gupta@oss.qualcomm.com, quic_chennak@quicinc.com, stable@kernel.org, Jianping Li Subject: [PATCH v4 1/4] misc: fastrpc: Fix initial memory allocation for Audio PD memory pool Date: Thu, 9 Apr 2026 14:26:14 +0800 Message-Id: <20260409062617.1182-2-jianping.li@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> References: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA5MDA1NSBTYWx0ZWRfX7t4ReqZgDkJG 4ogfbj21gsytoQPRjAnusC7Vejd+dlODhG1gdCiaZEexhl7E1fYVsN0oBlxefh+/XkhC3ShX7ku QpMopas3LXLbEEUBGxuzse/FVTQYHjPonCGAahsaEgAPs73d9lHB9iAmY+SEYGUER/Lhu2pG0v0 1yOc5gjNhjNAgZo4T74AO8Q+EIx6/jp1Gm57eRugzWLrujUek8RJgIY1+HruzV+rp+FdYfaBhk9 7lA/oTL47LqEcDcJyk/z1nlcNqzMeq9FuLCLPtmceo3Xcl6SWbXy5SHiAN1RDNP7THI31FfqIde tHzxn2yfTTC7Wvf0Dh8n7W8lAnRcVyUgymHVm0GncpqFe3EWDSv0M2/f4NdzAvVHYjESTTN3GX4 MMmIiqDJNlauG0ZIoQDxh8HyrTlF2l9WwLP6sZwYMD8aMgNN/honxqVK/HuaFmjDNzDdmjxXZTQ zxKvurm0bsjqSgeLPTA== X-Authority-Analysis: v=2.4 cv=eKIjSnp1 c=1 sm=1 tr=0 ts=69d74696 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=Op9FgWJ_R3wbKKMAuNAA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-GUID: qmx5WBk2HJMlZpjBmCIyoQyYGUoALMZi X-Proofpoint-ORIG-GUID: qmx5WBk2HJMlZpjBmCIyoQyYGUoALMZi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-09_01,2026-04-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604090055 Content-Type: text/plain; charset="utf-8" From: Ekansh Gupta The initial buffer allocated for the Audio PD memory pool is never added to the pool because pageslen is set to 0. As a result, the buffer is not registered with Audio PD and is never used, causing a memory leak. Audio PD immediately falls back to allocating memory from the remote heap since the pool starts out empty. Fix this by setting pageslen to 1 so that the initially allocated buffer is correctly registered and becomes part of the Audio PD memory pool. Fixes: 0871561055e66 ("misc: fastrpc: Add support for audiopd") Cc: stable@kernel.org Co-developed-by: Ekansh Gupta Signed-off-by: Ekansh Gupta Signed-off-by: Jianping Li --- drivers/misc/fastrpc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 47356a5d5804..b87a5f97c96f 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -1324,7 +1324,9 @@ static int fastrpc_init_create_static_process(struct = fastrpc_user *fl, err =3D PTR_ERR(name); goto err; } - + inbuf.client_id =3D fl->client_id; + inbuf.namelen =3D init.namelen; + inbuf.pageslen =3D 0; if (!fl->cctx->remote_heap) { err =3D fastrpc_remote_heap_alloc(fl, fl->sctx->dev, init.memlen, &fl->cctx->remote_heap); @@ -1347,12 +1349,10 @@ static int fastrpc_init_create_static_process(struc= t fastrpc_user *fl, goto err_map; } scm_done =3D true; + inbuf.pageslen =3D 1; } } =20 - inbuf.client_id =3D fl->client_id; - inbuf.namelen =3D init.namelen; - inbuf.pageslen =3D 0; fl->pd =3D USER_PD; =20 args[0].ptr =3D (u64)(uintptr_t)&inbuf; --=20 2.43.0 From nobody Sat Apr 25 13:31:03 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C74D0315D43 for ; Thu, 9 Apr 2026 06:26:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775715999; cv=none; b=fdK3GCKXrd/StHvJvjhDwfL76p6kwlxFdylr98sMii3xkkOv3rjBXANqL1LhYcKq26hnvGwDaoprhJRXVl4Yx2wFkRwv7z3BDZNhjYbUqiwDCSQq2E+b8/cct4IvE3LFf72uWxuDBYWXttEh8U1P+Qjrz9UN/tN2kQEKyDgH5Mc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775715999; c=relaxed/simple; bh=z6vbDo0OkzuQGNRRmVefXteFHpfMXlyyWBpHr+UoyQM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=khYjN818JmKufAV+ABosNcxa0/kNu47C4HPxFcTMBLDnZARXCMMxuH8iacva08d3/0NTkdKZSmAUyWRjOsakT2jKqvBdEm3FmnLjODpJePAnHpuvzpoq0amOnq1YWco1shd7u+/pVk6/7EYZXMCUbUATYUfgMbd64/AsCA2W2+0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=awwcLrJt; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RJjLpAsP; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="awwcLrJt"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RJjLpAsP" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 638NQf2h4049335 for ; Thu, 9 Apr 2026 06:26:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=pX4/CzTEsQ9 azlafCB2t1IsspVCg3AMoDjZdlkJJoE4=; b=awwcLrJtHXQ5tfoHcotTtyGJOSD 0MeLxKwccPj+SJ06MoxJ8ZK1K938h61GWnCehkSek+qUwHMrc6phwRSg7wEc89L8 mFNeo3JSVqk5E/QxBjHFcKkNTnPj/AoLKpHEKZFPy5l8WgPsB4Rifo1ixZ75X7P2 2U0I11c81EkV3DuHbAPN62L5WhlbG/hD8Vs5+H81h5g8BMyANOKG1T71AbgohLbb u7PUi/TrP1uIMzAszl4Pn7OxSfehD7xCvyd5xLpBi+MyFuLFb9XfbUWZxOPH8s5V VHO+9B7eyRg/tY943OGRzHz1X1F6atcUbHKGTymz8LSx9TeAweoQuctj7bg== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddtd72qfg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Apr 2026 06:26:35 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2b24e45271cso8571065ad.2 for ; Wed, 08 Apr 2026 23:26:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775715995; x=1776320795; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pX4/CzTEsQ9azlafCB2t1IsspVCg3AMoDjZdlkJJoE4=; b=RJjLpAsPV0D52+wfCCpU4bGpWzqzqiNtpVGW/GsuGNNplUW9jhKmTa9ny1trKT06Hl NdOABvQu98+4noJ5u6ns2xNdlDRIg+ygHc06V5P9mnKCRShFH1Ft+kZ3RZwGLmcMJW0u zvie6WaC2NzvlpGaANcpw6mlwAS/U7XdDGOjkM+1f6wr1upqA66iQcj16YlsP5Yz5qid 6c1JBOq9LkOsMAXjd8FIIG3Qke5bSRvrtop+TLEXy3lNR/wQK2aBRe1SaSeGD4z284jd Jm7FGwgNLet3+FZzW/l92pULOM/xdRM05yFhVofZDZXltu/6mABFaQiTOkKxuaNmAb83 pDlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775715995; x=1776320795; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pX4/CzTEsQ9azlafCB2t1IsspVCg3AMoDjZdlkJJoE4=; b=PTGGcDKrj+DeuZwMRVd3FUbdTnI42LOrSHjoi3JZGl7YMbvqK8oY7cBfekGrta3hnu ZKr+MqGqZvut+yDm9BGTMTF5KM64AaTFpgWL+gq/adqAy6Sp8je6+zz67c5zpwyRW/iT I8OACx9OI7BSE8a9Z2KgvUBMynn2smRWhy/oKp6EnJqolOgTxmuPMIIhhuv2pui5k5X4 HELSv3nxFPGGIDi1sg9L6Zmmhntk9NkIMspbp2bf7c7a1vnUkBHAgN1awIEvZB4z3dhj aVEYJAPSDlpr3rBvT1kllg2iRgWkt5PaZB4+WaFdtPhfZYhCgJjsp9IZ1t2KHU5wGvyU G7AQ== X-Forwarded-Encrypted: i=1; AJvYcCURnMSpFi/c9cA2i64oke/6ZXfEV4SQDM6RJWy8AVrWBMqIzTndEKBwI/b82iVDDoxDSb/8F9aKyI5yIfQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzlAvYyW+gVxgec1noH6s2JLBZrbkVaGiYCWOpy/BaIuEkONOl0 8qWde3wDhfT9CoqqxD0ZPY+69LRAEdAN409xiggqPtZKI7iVN1RlHALs/jcbm1jlx1PhRSj7Drk z/o1NSCYldkx4bJNi4P3G1m1f3PXlhHk5lTh7T6koUiwqUbAboqL432DKJE1E1ARcylly0o0C7j fBwQ== X-Gm-Gg: AeBDieuWMCYqSdCTfzUe0r7/R76JSftiyHvoBzICs9yMT1dJOT2gadoLxmrInBSfaLM QnyP7F2+TqYRahMkq47nQzixL7FYkQUZUkughXVA9FdXGOg7OIeBLNfqP+x6Sj7iaKo8TqHDzCn tIaRaaLydJk6hbjzJp745PM8zdz96Q34qEn/euwTJ6wjUWtJfQjCWJCT2kkBNWGuB26zgRVtYsV E9ohh6O4+zHSsWAXQO2w6gy/A4IdNYVkV4wIh8UGjzx0NKgmQL+xUVfhIo3v6pPh3jn4KRaK3Na jnvvJPQ5fy2paHfRRjBPNGRFN1DA1kfiDBwstjHVPnwXTjvjHj+sLL9e79u4+r/viBqtmqzdpw+ JJ8+NdXcYqgmOMXWay5lyaZuMtPJCuGdpKDU7k9/fylzsNTC3Yk57c4OObx6UzwDzBjCahn0Cwb vZYFq2FIW0wsffsFLnbw== X-Received: by 2002:a17:902:da83:b0:2ae:5163:c2aa with SMTP id d9443c01a7336-2b2817add40mr242580465ad.20.1775715994553; Wed, 08 Apr 2026 23:26:34 -0700 (PDT) X-Received: by 2002:a17:902:da83:b0:2ae:5163:c2aa with SMTP id d9443c01a7336-2b2817add40mr242580075ad.20.1775715994073; Wed, 08 Apr 2026 23:26:34 -0700 (PDT) Received: from QCOM-SocCW5bzXR.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b2749cbd4dsm220786795ad.76.2026.04.08.23.26.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 23:26:33 -0700 (PDT) From: Jianping Li To: Srinivas Kandagatla , Amol Maheshwari Cc: Arnd Bergmann , Greg Kroah-Hartman , Abel Vesa , Jorge Ramirez-Ortiz , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, ekansh.gupta@oss.qualcomm.com, quic_chennak@quicinc.com, stable@kernel.org, Jianping Li Subject: [PATCH v4 2/4] misc: fastrpc: Remove buffer from list prior to unmap operation Date: Thu, 9 Apr 2026 14:26:15 +0800 Message-Id: <20260409062617.1182-3-jianping.li@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> References: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=QoRuG1yd c=1 sm=1 tr=0 ts=69d7469b cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=ZnmZ8TzD_GdZzTgawW0A:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-ORIG-GUID: MullBq2xl_vTZ2A4hhbIlCK4B7QSpB-c X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA5MDA1NSBTYWx0ZWRfX2jRtfJSjYScn J1NPzUcF+VY/SYAriLair7nCuJBNgknrYxj0h1m9I7wXL8lHnoONCTE/MrFo2dsGYNdZiNK367y UXPNa8Df2J2tLZjAqk0A+yirLTJiMYxew/MhjvdWpv27ugJ76BQIiYb4bqZDYL6/60ZN/MaDFqg RGFjgV/KO7zI2MV5iqXQssmMQe6vQ9I1lHTKv3zDm+LLP5gDpazptmAfmt8cNguNQRvOSSF+DVG NCq7KVXubcsKvcT7AdOgxH5fNz5m6uv7Rt0Yr2C20V7dWXX1XshrU8kMTH2l2SI4r9F56v8WCiQ eZ//enH3IAX3yf1VrEDpkjU1zTgwoXcGaGb9Q912UPLqJNcHakgXxNl55m3PcL1Uf3Z8uwAoM8D XtOaJ8VpivORwx+liD56yqYCS02FKFGnwtUXIk0jGnFcFoV2EGsPYIXhARelqytVrEKHc+XhqSN yKSn00IJUbpQs3MsSsg== X-Proofpoint-GUID: MullBq2xl_vTZ2A4hhbIlCK4B7QSpB-c X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-09_01,2026-04-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 adultscore=0 malwarescore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604090055 Content-Type: text/plain; charset="utf-8" From: Ekansh Gupta fastrpc_req_munmap_impl() is called to unmap any buffer. The buffer is getting removed from the list after it is unmapped from DSP. This can create potential race conditions if any other thread removes the entry from list while unmap operation is ongoing. Remove the entry before calling unmap operation. Fixes: 2419e55e532de ("misc: fastrpc: add mmap/unmap support") Cc: stable@kernel.org Co-developed-by: Ekansh Gupta Signed-off-by: Ekansh Gupta Signed-off-by: Jianping Li --- drivers/misc/fastrpc.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index b87a5f97c96f..148085c3b61a 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -1862,9 +1862,6 @@ static int fastrpc_req_munmap_impl(struct fastrpc_use= r *fl, struct fastrpc_buf * &args[0]); if (!err) { dev_dbg(dev, "unmmap\tpt 0x%09lx OK\n", buf->raddr); - spin_lock(&fl->lock); - list_del(&buf->node); - spin_unlock(&fl->lock); fastrpc_buf_free(buf); } else { dev_err(dev, "unmmap\tpt 0x%09lx ERROR\n", buf->raddr); @@ -1878,6 +1875,7 @@ static int fastrpc_req_munmap(struct fastrpc_user *fl= , char __user *argp) struct fastrpc_buf *buf =3D NULL, *iter, *b; struct fastrpc_req_munmap req; struct device *dev =3D fl->sctx->dev; + int err; =20 if (copy_from_user(&req, argp, sizeof(req))) return -EFAULT; @@ -1885,6 +1883,7 @@ static int fastrpc_req_munmap(struct fastrpc_user *fl= , char __user *argp) spin_lock(&fl->lock); list_for_each_entry_safe(iter, b, &fl->mmaps, node) { if ((iter->raddr =3D=3D req.vaddrout) && (iter->size =3D=3D req.size)) { + list_del(&iter->node); buf =3D iter; break; } @@ -1897,7 +1896,14 @@ static int fastrpc_req_munmap(struct fastrpc_user *f= l, char __user *argp) return -EINVAL; } =20 - return fastrpc_req_munmap_impl(fl, buf); + err =3D fastrpc_req_munmap_impl(fl, buf); + if (err) { + spin_lock(&fl->lock); + list_add_tail(&buf->node, &fl->mmaps); + spin_unlock(&fl->lock); + } + + return err; } =20 static int fastrpc_req_mmap(struct fastrpc_user *fl, char __user *argp) @@ -1988,14 +1994,17 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl= , char __user *argp) =20 if (copy_to_user((void __user *)argp, &req, sizeof(req))) { err =3D -EFAULT; - goto err_assign; + goto err_copy; } =20 dev_dbg(dev, "mmap\t\tpt 0x%09lx OK [len 0x%08llx]\n", buf->raddr, buf->size); =20 return 0; - +err_copy: + spin_lock(&fl->lock); + list_del(&buf->node); + spin_unlock(&fl->lock); err_assign: fastrpc_req_munmap_impl(fl, buf); =20 --=20 2.43.0 From nobody Sat Apr 25 13:31:03 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62C2D31985C for ; Thu, 9 Apr 2026 06:26:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775716002; cv=none; b=lEwCdBoF3D4OJ590VdZPH5TPbrsnFcT6YGD2X7gXmeHOGrbErwYh6xnA5x+DeISPJ5RGNQpSKIXUVdk5VRVsdc5Vemm4kxLITl0d+IRiDF//kv+jIduWuw4VRcmZejIXVeSfUugaToFUF9BwlrgrIjvvfcKXGKcLOKCdOwWnMnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775716002; c=relaxed/simple; bh=MvR+SvaSEuYi/QfVS/RX8dfj8wgrFhoZokgaZ8UC3uY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jXbtpZSdpydlXACvyCdUAa6oKlfREyJGo5NOUv0fJKHLWprJIRiA2JyzjZOXeC0a0aFYiQu0uD3VAeSgOXY4/al1NrrFbNVlrzE29EjeXjjG4suyAX+7PN90kCRdQ0i/f3ESw8Z2wOzfmiDddpXOT68ikQVhalYAzik+9ILeuWQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=U3DRb75x; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZI10FtRB; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="U3DRb75x"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZI10FtRB" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6394vsY83532458 for ; Thu, 9 Apr 2026 06:26:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=R9COzrVJDDX VUzJaQuSwPTmlBGewfpyqlBcsp+gMY8o=; b=U3DRb75xOSbgTHI1ulCEnB8bTog isBc2sQ9jSMPjowrTL7ffkJQNyhmStDs1YQt0f8/bSnNmv4kI8GwOykXPeALMQ8W ZfclkGzsgJ9lKLasLkbV/P76y8BdSNwDPbo236FytKpAyTmmT40u+ewd8TqE/HRT sp4BYLjMv934LM3CNwX4hfrPeWRytTAg0xyPRZp1bFX8w08EYg0sJys+LJiEh2wi drLXI9nMQxa7Jn5JUuiX74++Wf5a4EO+TaQ7RZV4slFVZkmgqY7UWTw50jIHs+qo OeK2aFXcUE1MuCTm3yZRV8T3KjwPt15eT5ppLylsCnDox8jD4TXyWhgj0vg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddw9msuq7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Apr 2026 06:26:40 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2b23af7d7e8so18461295ad.0 for ; Wed, 08 Apr 2026 23:26:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775716000; x=1776320800; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R9COzrVJDDXVUzJaQuSwPTmlBGewfpyqlBcsp+gMY8o=; b=ZI10FtRBGHtKeO1w6R/1ElKdMv4URqfQXkyUKyHz8Wht3Yy89j2ZTihZBk6CULf2f6 VPrEbedizDjYRYboJTL/PHMwHUAsAmwbfcJ8PDfMhmbugyCatvG4Wy0HZkfNm1ixZyKg yxh1q6D0Ofteac+ZqKI3DQeRRf5xno1M7kJjvEAdkAfK3+Tu6BUos6hmZe0V2buT/fJm n4mkTHct7vQ7qC55FTSzaLz/T/3oNrsdAZrDx0rGU+e0DUNwqJk04h4YxHTeXdsgjUpS iM4yK1/8VwG7mG/G8Ld8Z6TM8bQfT1g81tNWQqEMsMsXXklGIxl5JpJ6eS3qHQSPa2qf 3FZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775716000; x=1776320800; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=R9COzrVJDDXVUzJaQuSwPTmlBGewfpyqlBcsp+gMY8o=; b=ToEPdsS1cP9Wk+j74PIyfubd819su9fhvrneNkWWAfIjGKXdrBP5JpgoXyY7N25UXv dwakbIEwTGIgTUtV6ThFd1NBZngW8bWLbIFPz5nDAG3QPo7BJcOW7czfS6jjo6bVd+K4 PSdb5itWMAi0fQ/66/88JhmFOM/be0ijv7pX8MgcwX4mBaGpkv0VKcnEQgNjoXkPZktn 8NpPEceIoGrg+ur9Jls49O9Z86hK3NjDXX2xJRuIW0ih3qvLexhkGpm1c3HSdkfai2OH IOmb8KTK4/HqCEonkvblrNJM9eVhD4sXFYwAREPQGcG855G2NdOkEpx/oWwwxs26+HDC FeWg== X-Forwarded-Encrypted: i=1; AJvYcCUZuh9Ojl16wqLCjuAx1wtNScYUvHli015wFgWWPhKQi7QIh8p9w6VrY/fpnf2G6bU19NX1Dpvf5EgMCk0=@vger.kernel.org X-Gm-Message-State: AOJu0YyKtUraviFaDgdw90UKGnNteByQLjY/ILwE6mexnErAK3lBoBYf 3EqVXrAhgUy0V/VWVrN19KSjw1K8/ptoATl0OPUSdpvcEaFI84uK/bWh3dea6+7/54fVghCesfw LmNfHRU20rgiVzIrKr3xE0Hv7A07KRJ9tP4PMZ8kaExway4UqtBwaMTHpbnJ9C9rDddk= X-Gm-Gg: AeBDiesUT2r9DUB/Z+MtlN7hv8nluxzL9/28oi08Zx3+Y1tI+We8s8uXnRtQUgJHQwH CZL7MnlXMWo4BiCfOTWSXwlO0XGE6mU5JmLEFpNYu70BwrUKcLoklfWWfCViCkNbsR5fqFixFaO ntg1C4oXs47fJGMuF02ZLc/JydHfybZ2kyRXrE4h0ZUla3dcNQD8bpVMGB4FESQ21GNKvkVI6hC WgoocJwxTwfsPHg9MEQRw35I3oYYoMY862aSYzborY1/Za3E4hTvmYYhkNao1207HeKaqZ1x6KW G0f/FfQN1pnRwHdBDOdmzjkeh/4aZtwg/B/JIG8F8j3/2TvQwK2uujTu8FtF8wEB3K8KwFbOu6p uxzcTO4r+Mbk0c9phdom7dt/UEvokBrs9hScvefBmJn+eYuNbLcXtIfkUEz0lVF1Q7MHgPa5Yh8 lUm2Fcwh8EN+8JAQylKA== X-Received: by 2002:a17:903:1ab0:b0:2b2:5503:1ba0 with SMTP id d9443c01a7336-2b28182c321mr272849575ad.5.1775715999784; Wed, 08 Apr 2026 23:26:39 -0700 (PDT) X-Received: by 2002:a17:903:1ab0:b0:2b2:5503:1ba0 with SMTP id d9443c01a7336-2b28182c321mr272849305ad.5.1775715999314; Wed, 08 Apr 2026 23:26:39 -0700 (PDT) Received: from QCOM-SocCW5bzXR.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b2749cbd4dsm220786795ad.76.2026.04.08.23.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 23:26:39 -0700 (PDT) From: Jianping Li To: Srinivas Kandagatla , Amol Maheshwari Cc: Arnd Bergmann , Greg Kroah-Hartman , Abel Vesa , Jorge Ramirez-Ortiz , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, ekansh.gupta@oss.qualcomm.com, quic_chennak@quicinc.com, Jianping Li Subject: [PATCH v4 3/4] misc: fastrpc: Allocate entire reserved memory for Audio PD in probe Date: Thu, 9 Apr 2026 14:26:16 +0800 Message-Id: <20260409062617.1182-4-jianping.li@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> References: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=cfPiaHDM c=1 sm=1 tr=0 ts=69d746a0 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=4k61BgtcDmjeHYH7visA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: zqc3h-jj9bcLRwEhSvO6H3w-jhQVYzUE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA5MDA1NSBTYWx0ZWRfX3f+iF2D1943E s75B/qKm2S52P+L6iZxHvcNp2FwxAxa8A1Vfvkw/d0z60Bh9t/Gpg/jcvG7ovZChzY90g69S6o3 QpcKWxw86ZqicZ5mn1CMcX8IP40IG4uJsyZXwbUfCW6h+qAHtO6FeV3CMBi4VLt/DWFVBMRfpVD YNUfCRh3YDav63XSFdF56GGQ8dtLQrJUFpCtFHnYYgCxAC4zx59Be/Q8DW2YGzwAxuWMiFk7QQF QUgT04VZ+YoRFwZk+/Z5lMqOl1zIrVU9CmpiwpIrfktPpbETlvSBoH2ikEYg8fYpvJ/Z3od5A11 kmSP2/vU9vCYCCCJPyjU0ozaYpXIMsSxW3gdmmETXQmop+wtSPyf7ChZNmKB4t1AWc5eDcJJt9q o+mQDzHecoxnmfgDstqbDBP2KMQH4u4pj83JqAGSADzTzAIxqjRCJtn7PXuyNG7z5u4r/u5rWjm Wq8CA6iCXhhdFV9A4Hw== X-Proofpoint-GUID: zqc3h-jj9bcLRwEhSvO6H3w-jhQVYzUE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-09_01,2026-04-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604090055 Content-Type: text/plain; charset="utf-8" Allocating and freeing Audio PD memory from userspace is unsafe because the kernel cannot reliably determine when the DSP has finished using the memory. Userspace may free buffers while they are still in use by the DSP, and remote free requests cannot be safely trusted. Allocate the entire Audio PD reserved-memory region upfront during rpmsg probe and tie its lifetime to the rpmsg channel. This avoids userspace- controlled alloc/free and ensures memory is reclaimed only when the DSP shuts down. Signed-off-by: Jianping Li --- drivers/misc/fastrpc.c | 104 +++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 148085c3b61a..a67ae991c0b0 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -276,6 +276,8 @@ struct fastrpc_channel_ctx { struct kref refcount; /* Flag if dsp attributes are cached */ bool valid_attributes; + /* Flag if audio PD init mem was allocated */ + bool audio_init_mem; u32 dsp_attributes[FASTRPC_MAX_DSP_ATTRIBUTES]; struct fastrpc_device *secure_fdevice; struct fastrpc_device *fdevice; @@ -1295,15 +1297,16 @@ static int fastrpc_init_create_static_process(struc= t fastrpc_user *fl, struct fastrpc_init_create_static init; struct fastrpc_invoke_args *args; struct fastrpc_phy_page pages[1]; + struct fastrpc_channel_ctx *cctx =3D fl->cctx; char *name; int err; - bool scm_done =3D false; struct { int client_id; u32 namelen; u32 pageslen; } inbuf; u32 sc; + unsigned long flags; =20 args =3D kzalloc_objs(*args, FASTRPC_CREATE_STATIC_PROCESS_NARGS); if (!args) @@ -1327,31 +1330,6 @@ static int fastrpc_init_create_static_process(struct= fastrpc_user *fl, inbuf.client_id =3D fl->client_id; inbuf.namelen =3D init.namelen; inbuf.pageslen =3D 0; - if (!fl->cctx->remote_heap) { - err =3D fastrpc_remote_heap_alloc(fl, fl->sctx->dev, init.memlen, - &fl->cctx->remote_heap); - if (err) - goto err_name; - - /* Map if we have any heap VMIDs associated with this ADSP Static Proces= s. */ - if (fl->cctx->vmcount) { - u64 src_perms =3D BIT(QCOM_SCM_VMID_HLOS); - - err =3D qcom_scm_assign_mem(fl->cctx->remote_heap->dma_addr, - (u64)fl->cctx->remote_heap->size, - &src_perms, - fl->cctx->vmperms, fl->cctx->vmcount); - if (err) { - dev_err(fl->sctx->dev, - "Failed to assign memory with dma_addr %pad size 0x%llx err %d\n", - &fl->cctx->remote_heap->dma_addr, - fl->cctx->remote_heap->size, err); - goto err_map; - } - scm_done =3D true; - inbuf.pageslen =3D 1; - } - } =20 fl->pd =3D USER_PD; =20 @@ -1363,8 +1341,25 @@ static int fastrpc_init_create_static_process(struct= fastrpc_user *fl, args[1].length =3D inbuf.namelen; args[1].fd =3D -1; =20 - pages[0].addr =3D fl->cctx->remote_heap->dma_addr; - pages[0].size =3D fl->cctx->remote_heap->size; + spin_lock_irqsave(&cctx->lock, flags); + if (!fl->cctx->audio_init_mem) { + if (!fl->cctx->remote_heap || + !fl->cctx->remote_heap->dma_addr || + !fl->cctx->remote_heap->size) { + spin_unlock_irqrestore(&cctx->lock, flags); + err =3D -ENOMEM; + goto err; + } + + pages[0].addr =3D fl->cctx->remote_heap->dma_addr; + pages[0].size =3D fl->cctx->remote_heap->size; + fl->cctx->audio_init_mem =3D true; + inbuf.pageslen =3D 1; + } else { + pages[0].addr =3D 0; + pages[0].size =3D 0; + } + spin_unlock_irqrestore(&cctx->lock, flags); =20 args[2].ptr =3D (u64)(uintptr_t) pages; args[2].length =3D sizeof(*pages); @@ -1382,26 +1377,7 @@ static int fastrpc_init_create_static_process(struct= fastrpc_user *fl, =20 return 0; err_invoke: - if (fl->cctx->vmcount && scm_done) { - u64 src_perms =3D 0; - struct qcom_scm_vmperm dst_perms; - u32 i; - - for (i =3D 0; i < fl->cctx->vmcount; i++) - src_perms |=3D BIT(fl->cctx->vmperms[i].vmid); - - dst_perms.vmid =3D QCOM_SCM_VMID_HLOS; - dst_perms.perm =3D QCOM_SCM_PERM_RWX; - err =3D qcom_scm_assign_mem(fl->cctx->remote_heap->dma_addr, - (u64)fl->cctx->remote_heap->size, - &src_perms, &dst_perms, 1); - if (err) - dev_err(fl->sctx->dev, "Failed to assign memory dma_addr %pad size 0x%l= lx err %d\n", - &fl->cctx->remote_heap->dma_addr, fl->cctx->remote_heap->size, err); - } -err_map: - fastrpc_buf_free(fl->cctx->remote_heap); -err_name: + fl->cctx->audio_init_mem =3D false; kfree(name); err: kfree(args); @@ -2390,7 +2366,7 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *r= pdev) } } =20 - if (domain_id =3D=3D SDSP_DOMAIN_ID) { + if (domain_id =3D=3D SDSP_DOMAIN_ID || domain_id =3D=3D ADSP_DOMAIN_ID) { struct resource res; u64 src_perms; =20 @@ -2402,6 +2378,15 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *= rpdev) data->vmperms, data->vmcount); } =20 + if (domain_id =3D=3D ADSP_DOMAIN_ID) { + data->remote_heap =3D + kzalloc_obj(*data->remote_heap, GFP_KERNEL); + if (!data->remote_heap) + return -ENOMEM; + + data->remote_heap->dma_addr =3D res.start; + data->remote_heap->size =3D resource_size(&res); + } } =20 secure_dsp =3D !(of_property_read_bool(rdev->of_node, "qcom,non-secure-do= main")); @@ -2482,6 +2467,7 @@ static void fastrpc_rpmsg_remove(struct rpmsg_device = *rpdev) struct fastrpc_buf *buf, *b; struct fastrpc_user *user; unsigned long flags; + int err; =20 /* No invocations past this point */ spin_lock_irqsave(&cctx->lock, flags); @@ -2499,8 +2485,24 @@ static void fastrpc_rpmsg_remove(struct rpmsg_device= *rpdev) list_for_each_entry_safe(buf, b, &cctx->invoke_interrupted_mmaps, node) list_del(&buf->node); =20 - if (cctx->remote_heap) - fastrpc_buf_free(cctx->remote_heap); + if (cctx->remote_heap && cctx->vmcount) { + if (cctx->vmcount) { + u64 src_perms =3D 0; + struct qcom_scm_vmperm dst_perms; + + for (u32 i =3D 0; i < cctx->vmcount; i++) + src_perms |=3D BIT(cctx->vmperms[i].vmid); + + dst_perms.vmid =3D QCOM_SCM_VMID_HLOS; + dst_perms.perm =3D QCOM_SCM_PERM_RWX; + + err =3D qcom_scm_assign_mem(cctx->remote_heap->dma_addr, + cctx->remote_heap->size, + &src_perms, &dst_perms, 1); + if (!err) + fastrpc_buf_free(cctx->remote_heap); + } + } =20 of_platform_depopulate(&rpdev->dev); =20 --=20 2.43.0 From nobody Sat Apr 25 13:31:03 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 17898315D3B for ; Thu, 9 Apr 2026 06:26:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775716008; cv=none; b=P4zrI3Us6+h2wXaNdHs9KTanohzPyHgcJoA2mWiXlVSBNB8MLw4Gx1ffCukPFXChDi3IWCh4FAEFmxgw4S6lEnpHL6pJjBPrYySzAOuC3IbyOvlhuhvMxi/VqQ+daXX5v3KwD6mudw5VvpKxKHhoD0nZQeZ87H7ebO8W6w3ilPQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775716008; c=relaxed/simple; bh=voof3OXR63zRr/xn1aaX4h9Q6+CP2DryZBJS4O9NWf4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nIJyQ+hm052E43TNOiNfZskF6e0XmVZieuyi2t7ABlqfwjmdVSVPbu2Wz6kckk/GsolaoC1KI4Jj9s1GFSBxIFeiF4WGFVNr2o6QnqND3aj2rdLL9AiQkvJY5ZT7om4uzaVUYhK622y5LXL41ttMuacBRTMLPg/IfFKG8OV2oCo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=U/FZNqWo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=M2OVnFT7; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="U/FZNqWo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="M2OVnFT7" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6394wuYV4107875 for ; Thu, 9 Apr 2026 06:26:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=cEmJBwZTivF /RSC2tmP5X0gUH+iQ6pYh8h5AOb4GCG0=; b=U/FZNqWoz9h74xg/WkfqqUZiAJh joY1iu4/n9oeAqFcM9AF3L3fXJNRwHCXF9JHiVMSJRL+40QjDZbnALzUfTzckItr Dw6mFVkQVjZiJTOUg87NJkk4zbDMRiGRuLjYzAcR5sCu36VKWBq/MyIMNJl8SZcw 7MEVJFhcnRe0Hg6vm9MUT8xxZKrDzN7OFhejotnAXzEoRfVdX6vDtfzhWHX6s6xa N/t+uYETXR1j4ObDljFBZ4gKCxAV2IEjPFX7ZAKQar9eK7VZnrZ0v6tQrkt0hRBf Y5DEkOiicLQB8QwQtVSRQty5IaMk1tHymq+rfuXkDd60xhk9KGYk8ZxPNKw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddxhahjf0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Apr 2026 06:26:45 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2b2471321dcso17869275ad.1 for ; Wed, 08 Apr 2026 23:26:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775716005; x=1776320805; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cEmJBwZTivF/RSC2tmP5X0gUH+iQ6pYh8h5AOb4GCG0=; b=M2OVnFT7r3+w9b7L5tiGa273PYd83FjJpYXMU0YEkx22kUmFkNZcVVNhrXcMuCwBHc L1yHd1Ct4upNMRrn6Oemu33Feb9UXBf8q1hFhEFH8/vICfyWk9mqEU93Lr9eLsQ6hGBq F8LHm7YVN09LYBRHXtpnn986luFpiAMTFqCd2/+XINpEqosikM/z3W0KpWRvtZ1D7mB3 PAOpTqgmVf3hpAEAwlEHILlJabAionXFkoEiEyg7a754E7pDEaox034N0+nKFcFPF9NF nfUU9gLVRWSvaQZVS6Lv7sTHPdVgz6xjZUYsTLSuh1fiIvTsnhQQPu4c8HiwqGkcerkH TDmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775716005; x=1776320805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cEmJBwZTivF/RSC2tmP5X0gUH+iQ6pYh8h5AOb4GCG0=; b=qJfhTXrBXn0RqJGEbHnY2fY7FfBOBlXxRypMQb0hdVtJQ28QVIW3sJiJnO3qHyM5yY Y0LO2B6h1D2cWYyuqh47zqyikPPNWpbBm6oY0XP6reDOlxoJWF6qbWpk51I/L3LN0QmE u6OMt1DWpIW75YijK340m/7iNortkoyBKvsQCf3d9UHnIdUUeOKek0lPfLtqPmUWa/xU PAGIjdzau8KQKPFQ8dH/YL1T4YC1rMG8EwO4RaPhrD/YXhOjIRVCQyjKSOPrKz+2FOKY IGTTNT9Pegg/mm1fpRKgtSXXaRQUxmGXPaIC2GJoSYJ+qI1j2QzgLODUYKs3vgSe0bR3 Gl0Q== X-Forwarded-Encrypted: i=1; AJvYcCU8t1H9GThY0mgTuASQg/IE07CuUNS97nWDGOQFup2znX6mlw3VwI8MaktmDNA/NwHpMnNLoa7dTrNhWNA=@vger.kernel.org X-Gm-Message-State: AOJu0YyP4LzrmfHrQzd5Kw37J+T6jujiucT6ExU4ZzuukF/HSmcu3/qi 2ddaj2BQy9I+qfNE6JlS0RvjKAkmCFl3/3zMoMiyrzp3w9zncg6G2+L0zc4eoW1/zAH9K0Iopd/ UKyjwMmyzAOPXyHKGD0IENykpfB22dF4MZxdcHo/Hq9LzybwDXUf0TX6YeiCk2ThFNUM= X-Gm-Gg: AeBDietI9BWc/QDVK23xJDUsfYOsu0NV9dKPX53QHdyWrsOpLZTBpXqdqWWw8aY+Y8/ nSML4VYww1uMfwG5XoPzjKA3dZ+e441/2IC1LccgWOSZRRdURRJVdgScswk4yjIbsYDfaA0eA9c n0fdXewW/1DoRhLtj5o5QvGy3P4O9BpN6PZmWN0wlzpZOlSzpto6AurVQvYUP/3BsJTdiuLenV4 LpUIr2DcW1PwRTA6JLXcdORCOC9r/tS3aRk8vN9R8EGaSALX/70ZUvUmaXg16Ca2QR7pSnCGAV3 DtwIVeoblorRBsReXwxfQF1EamJY71iF7z0D40c6haXWkcrRDDEE7iBvgN0wyj/jyn0XoZ8TztY AiviTraOMB5THVHByuKCt9zsOXpQihTL+3PZtLA2TPYf6RkfiLSbSKDTBvqZfgSEglO43GeuYTS BefEs3eQnFWBUlTRhq5Q== X-Received: by 2002:a17:903:3586:b0:2b2:6b58:9317 with SMTP id d9443c01a7336-2b28194ec0fmr245636695ad.39.1775716004882; Wed, 08 Apr 2026 23:26:44 -0700 (PDT) X-Received: by 2002:a17:903:3586:b0:2b2:6b58:9317 with SMTP id d9443c01a7336-2b28194ec0fmr245636355ad.39.1775716004452; Wed, 08 Apr 2026 23:26:44 -0700 (PDT) Received: from QCOM-SocCW5bzXR.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b2749cbd4dsm220786795ad.76.2026.04.08.23.26.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 23:26:44 -0700 (PDT) From: Jianping Li To: Srinivas Kandagatla , Amol Maheshwari Cc: Arnd Bergmann , Greg Kroah-Hartman , Abel Vesa , Jorge Ramirez-Ortiz , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, ekansh.gupta@oss.qualcomm.com, quic_chennak@quicinc.com, Jianping Li Subject: [PATCH v4 4/4] misc: fastrpc: Allow fastrpc_buf_free() to accept NULL Date: Thu, 9 Apr 2026 14:26:17 +0800 Message-Id: <20260409062617.1182-5-jianping.li@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> References: <20260409062617.1182-1-jianping.li@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: hH7kic5K43a68x9xMtPpP74F5jTSULEX X-Proofpoint-GUID: hH7kic5K43a68x9xMtPpP74F5jTSULEX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA5MDA1NSBTYWx0ZWRfX3GO0rwSJDHSB dr43p1aXKjcVWE2bSm8A0YDthk7hkUebA1EpLKAznuc0UIVHVnIyglj5vM1VtmM8g6L+IkhYpF9 aC2jrZNluj7ST4vnE5Bl8rMB/nWFCeIdIqh0AGJfyISSAkdtyoXIGKT/1QxM2BuUp6qBlzycVQh fYuh4F8wYUlzdHVOFFrX3OsWZMnoKpJSUQ3hGzpvwhzhigM+RfW0fg741BPJ5pCLpna2H49B1yh k9QUF4GlZ9IyK03pwc/emqv+t/I+9gXEWA5Cw5eSYJNJnO6j5catCkNYfAL9hHdIxwWnlwV4HXc LBmE0PzofsegjoKGOGKKOaAMEkV9MEMlVG+cvnXmTY8WlQhxh6vThs2mnwmLEFpmVgK/rXuajDV 1Gjt/Xj0+BMA7gb7bIwHmdN3iSsTvcETOhszGtwaxbl3glEv66qV8giO6GvytzMS3cWTJTaXBS5 mqu9S2w1maH4g12X2OA== X-Authority-Analysis: v=2.4 cv=BefoFLt2 c=1 sm=1 tr=0 ts=69d746a5 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=GmafkBk8WXepDEkBruoA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-09_01,2026-04-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 suspectscore=0 spamscore=0 priorityscore=1501 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604090055 Content-Type: text/plain; charset="utf-8" From: Ekansh Gupta Make fastrpc_buf_free() a no-op when passed a NULL pointer, allowing callers to avoid open-coded NULL checks. Co-developed-by: Ekansh Gupta Signed-off-by: Ekansh Gupta Signed-off-by: Jianping Li --- drivers/misc/fastrpc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index a67ae991c0b0..3cce81d0cd8b 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -416,6 +416,9 @@ static int fastrpc_map_lookup(struct fastrpc_user *fl, = int fd, =20 static void fastrpc_buf_free(struct fastrpc_buf *buf) { + if (!buf) + return; + dma_free_coherent(buf->dev, buf->size, buf->virt, fastrpc_ipa_to_dma_addr(buf->fl->cctx, buf->dma_addr)); kfree(buf); @@ -512,8 +515,7 @@ static void fastrpc_context_free(struct kref *ref) for (i =3D 0; i < ctx->nbufs; i++) fastrpc_map_put(ctx->maps[i]); =20 - if (ctx->buf) - fastrpc_buf_free(ctx->buf); + fastrpc_buf_free(ctx->buf); =20 spin_lock_irqsave(&cctx->lock, flags); idr_remove(&cctx->ctx_idr, ctx->ctxid >> 4); @@ -1565,8 +1567,7 @@ static int fastrpc_device_release(struct inode *inode= , struct file *file) list_del(&fl->user); spin_unlock_irqrestore(&cctx->lock, flags); =20 - if (fl->init_mem) - fastrpc_buf_free(fl->init_mem); + fastrpc_buf_free(fl->init_mem); =20 list_for_each_entry_safe(ctx, n, &fl->pending, node) { list_del(&ctx->node); --=20 2.43.0