From nobody Sun Feb 8 17:42:41 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 CF43D8F5B for ; Tue, 30 Dec 2025 11:02:35 +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=1767092557; cv=none; b=MAGqIMpjrg8JdnaVgQ/VfAk5VCho3dPHywbe0oD2OetnZC+TPKY/vhR6DvjMjilT5oqTfiJHpxjNJflPBlPGUo/Dgs7ZzJB0W0T1I6G93iXgWLjN9AVgXOqy6YTVSJqHMYbzYrezxGbsLlfu8REolw5wpn9Y0oBJjmO/lnEREns= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767092557; c=relaxed/simple; bh=m50kh3FueoAo7RgZQTmW1gLTt+u3WeihoOaE+wK6BZ0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rmqJRLbdXqmexVi4Iu1rIh4Pr7I+IbNLUeRYmr98EQZRNz0U9fg4bglPVca9i7Pik7KQROL6OlK80UAQ6cbRj9qgjznzIUQULUyKdlZwR7ZX6sDatyCSNAJp/fDTbHS0/XtrM92G5kr0moFWVAnVEnKM6VOFoMqECKqPSDLgdAo= 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=nLzKyOg4; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=g6x+p22y; 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="nLzKyOg4"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="g6x+p22y" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BU541FE3538683 for ; Tue, 30 Dec 2025 11:02:35 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=uXOb6/A5UVi 94XYfCLNblq+Mqdl95+smoRAtSR12Qsc=; b=nLzKyOg4PiyG2B1JCNk3PVrbwLP OsWjO2chMmmxsV4Hk/qNTO3EL1PW7WPYUAGr1SlIZRuBSAA02SCbqs7sxBot62g3 na/gZ/Un+7qSOBP/0LASmN7tTWShrV6g0UrjCCZDxFEK+ter41AlnyEt5gR/e8LZ DC6/cMQA3HpHJgEjjbogb30bRrN+lMOh/vh7IXq34Srpn37AxBcgGH4M2cO+21kY GvxK2EfkBYNkxkwWGEFjUBxZUztjHso3CvchhzSM5g4jPW3sxfdIud4Iuys/i5yN el0Onvgj6SKVwxM/TygjBDwFoTiSeetjpINpfu1Z7tTzMNOwmm4/ylZc8oA== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bc88ygsr2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 30 Dec 2025 11:02:34 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-34c387d3eb6so9129133a91.2 for ; Tue, 30 Dec 2025 03:02:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767092554; x=1767697354; 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=uXOb6/A5UVi94XYfCLNblq+Mqdl95+smoRAtSR12Qsc=; b=g6x+p22y2Ujj9VEUehHxDZjbWXgU50RekYr15HHuQDeFA2GSCpLtyY28X1rnislaVt nNFt/W33fCXj16/uY7wxaszY8uRIm6T4Yon3C0h2/Vgqnt6eb6SMKffjlkKSrJ5142yH U/G+H+OE8HE7QXLSf6/Cce8sr93FtMZnDI12Jdk61tRIqLVur+WgXCtr1owW1ZHHnm4a FbHWFCrGPOFCk2lfvZgJOHUKUMAC0TKFhV6mLk1fJUOvCWGYe5zUYm/piejyTbyEKOwe nyuZ8gyYUwBwCFJUN8vqZIyWIinRP9izblSaUn4uyN2xGzT74cdYrFIbbsMic7iLzn9O X9jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767092554; x=1767697354; 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=uXOb6/A5UVi94XYfCLNblq+Mqdl95+smoRAtSR12Qsc=; b=aWIYPbhBVvsZV4STwGHXLdu6+5ALGupcGy9GuCd0jtAoE8YxCk4A9e/y9DacBWp2k6 7vOBop4zDM1zJsYejxJny6i3CrFV4UgyDdeuQEpXECn7XHey/3FMYGyCUPYuUz3Shm+p F9AbKM1LBV9OqlcnPc0AZJ131D1zlmtVUjzrjwTvLHtUsvoH4UEY2z6JTaPyQuSSubXs pinR4rAeXGlTKsKHXPKwOWNjvPRg/WZAz5IOa5BMazeDM0ZHGB25jsAdPAPkch68vB3D 8s+n5F5jndFDDh8DvBykrsumwnTzHQsJGYI7jrlr31YpJE3zv9fU0z3n0dzaTT1EI5DE N4dQ== X-Forwarded-Encrypted: i=1; AJvYcCWIeVM//4m15JnNno5Ibct2hvS87QqyOPXPiD5FclygnYwWf/W+xioC5MYseQDOWWGQxoiMVe6yWMnCuzE=@vger.kernel.org X-Gm-Message-State: AOJu0YxIQu6TP2V251OCMYrP1tJkKimAMyHt8j0h4CpSuxp8ISQu8XGU lWk/gUJFn5tjY6PpPStpI+pZYzgas5/cA0nb7BYn0RmeF4tAWh+p846NAVOTphEUoCDPg3NxweG 45FWr/v6S4b87oB7N0bCHOfocxxUJ6uGb4jIa5xB5ggETMyd1XUI7yYmUwWMuGt4oCWM= X-Gm-Gg: AY/fxX519ARn+GTbNnF8HChZLdT18MhcM59yJk4RqvK9VVunBRPzCn4EZ5/0C4nYmWB BPdM6WsMFnBpJpQC+cbZhp5nV5y/xKTX+u/sRlOmCj9qy7qlm4eVFsOSrGe8wIw8n4DlQdl3fEO WRvO/mXFpKhcyPNSc8/qLLRU95OW/ebLhF+zMXmIwU2ovT4/Ko/87GvB3xk7Jdhy+SV+1egWCgc S1PS4GuG1NCEs+bVBol6jEHHBAaPy0tC+Gf1V/RQc8hqTF55kt25DBDD34hblLQGb96DGjzdXIt F1KAMYKyDqIHNboqCVulnKGBbWXpVD+R/WpURj2yREYJr9NzDeletGvOpZt2JskqpQE8zYS0GWs dXrF1A9SX0qj5Dwp0kn6VH3baeYqwTVmbQPwKuhbwgA== X-Received: by 2002:a05:6a21:6d9a:b0:35d:2172:5ffb with SMTP id adf61e73a8af0-376a94b9f40mr33065458637.47.1767092554352; Tue, 30 Dec 2025 03:02:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFmzcXCgCAF/KfhFTejp806J8JhYinHBklMJhbJpOqY8ALnUh2jYcR9CnXOC5f6eAcCigeiOA== X-Received: by 2002:a05:6a21:6d9a:b0:35d:2172:5ffb with SMTP id adf61e73a8af0-376a94b9f40mr33065431637.47.1767092553805; Tue, 30 Dec 2025 03:02:33 -0800 (PST) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c3a4deb6f17sm2556908a12.22.2025.12.30.03.02.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 03:02:33 -0800 (PST) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com, stable@kernel.org Subject: [PATCH v3 1/3] misc: fastrpc: Sanitize address logging and remove tabs Date: Tue, 30 Dec 2025 16:32:23 +0530 Message-Id: <20251230110225.3655707-2-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251230110225.3655707-1-ekansh.gupta@oss.qualcomm.com> References: <20251230110225.3655707-1-ekansh.gupta@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=POcCOPqC c=1 sm=1 tr=0 ts=6953b14b cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=TXGx01ld9870rz7a8QIA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: xFuEijb0rJtySqS2NoU36gi3CmTj09uz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjMwMDA5OSBTYWx0ZWRfXz50b3swVNeXi s3AR46yNNe0Nq+fMa+DDgC+kVRWPwkdHdOfe0aj84EwxBjBRsz//ryGdBFkZg0013500NVBDseK e3MkkWVOmARYDTaEbwkyiy916B0M3Yuk80CA2WGPBQvodIavwAOkUffqxme3iuK66QoIODc4n3w cpWNQwv7GVISYTUPdMTm3aRHQVLRJIyu33VR7CO1v5F2MmHSnB5l/u2NiLG1bsYXD0ldSdewHrH wXPEe4jFICel4AXzeX8Ca/bOWZbo8AmCYjgxNNYZTqCyVVuwkiYJnbRIHz8CcUxm9ZFRgmsLts5 ecC6mnoxQs2VZGt+QHNDXhA/eD0KgFDH4fjzW6qV8Y2dgYrENC2TfErnC7LCw0wusKiySiHq+u8 5CtUYZ8/6aJ14tiyKuKhuXmgIs9WQvdI9QeWqJuAPXIYKQhapFwvHUvy8uuBdEl/gHF4/uv7V/h 1z3Gm53O4UogUxBA1gg== X-Proofpoint-GUID: xFuEijb0rJtySqS2NoU36gi3CmTj09uz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-29_07,2025-12-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 bulkscore=0 phishscore=0 clxscore=1015 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512300099 Content-Type: text/plain; charset="utf-8" Avoid printing raw addresses in driver logs by using %p for remote buffer addresses. This reduces the risk of information leaks and conforms to kernel logging guidelines. Remove tabs in dev_* messages. Fixes: 2419e55e532d ("misc: fastrpc: add mmap/unmap support") Cc: stable@kernel.org Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index ee652ef01534..408fe47e9db7 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -1830,13 +1830,13 @@ static int fastrpc_req_munmap_impl(struct fastrpc_u= ser *fl, struct fastrpc_buf * err =3D fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, &args[0]); if (!err) { - dev_dbg(dev, "unmmap\tpt 0x%09lx OK\n", buf->raddr); + dev_dbg(dev, "unmap OK: raddr=3D%p\n", (void *)(unsigned long)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); + dev_err(dev, "unmap error: raddr=3D%p\n", (void *)(unsigned long)buf->ra= ddr); } =20 return err; @@ -1861,8 +1861,8 @@ static int fastrpc_req_munmap(struct fastrpc_user *fl= , char __user *argp) spin_unlock(&fl->lock); =20 if (!buf) { - dev_err(dev, "mmap\t\tpt 0x%09llx [len 0x%08llx] not in list\n", - req.vaddrout, req.size); + dev_err(dev, "buffer not found: addr=3D%p [len=3D0x%08llx]\n", + (void *)(unsigned long)req.vaddrout, req.size); return -EINVAL; } =20 @@ -1959,8 +1959,8 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl, = char __user *argp) goto err_assign; } =20 - dev_dbg(dev, "mmap\t\tpt 0x%09lx OK [len 0x%08llx]\n", - buf->raddr, buf->size); + dev_dbg(dev, "mmap OK: raddr=3D%p [len=3D0x%08llx]\n", + (void *)(unsigned long)buf->raddr, buf->size); =20 return 0; =20 @@ -2006,7 +2006,8 @@ static int fastrpc_req_mem_unmap_impl(struct fastrpc_= user *fl, struct fastrpc_me err =3D fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, &args[0]); if (err) { - dev_err(dev, "unmmap\tpt fd =3D %d, 0x%09llx error\n", map->fd, map->ra= ddr); + dev_err(dev, "unmap error: fd=3D%d, raddr=3D%p\n", + map->fd, (void *)(unsigned long)map->raddr); return err; } fastrpc_map_put(map); @@ -2074,8 +2075,8 @@ static int fastrpc_req_mem_map(struct fastrpc_user *f= l, char __user *argp) sc =3D FASTRPC_SCALARS(FASTRPC_RMID_INIT_MEM_MAP, 3, 1); err =3D fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, &args[= 0]); if (err) { - dev_err(dev, "mem mmap error, fd %d, vaddr %llx, size %lld\n", - req.fd, req.vaddrin, map->len); + dev_err(dev, "mem mmap error: fd=3D%d, vaddrin=3D%p, size=3D%lld\n", + req.fd, (void *)(unsigned long)req.vaddrin, map->len); goto err_invoke; } =20 --=20 2.34.1 From nobody Sun Feb 8 17:42:41 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 0DB0F2E7F1D for ; Tue, 30 Dec 2025 11:02:39 +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=1767092560; cv=none; b=q8UH3WrLMOFjUnzS6P5tj1qN/goF7Bei/chxZbbExne7MKx2RhP0B5GL5+XELltbgqpo/ZyAjrFFoexnim3HB2Gd65BS9Ep63OcwULNIaUMnXV2q+i5KTaCEzEUT6WhU1FdcPJ5ypk6Y/rMbL6e73tGai485dnLtDoB+ysZT7cI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767092560; c=relaxed/simple; bh=ZlvwGRaijfFW5xTAaesXx212yCTlRoStI6gpLYYYj5w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mmAL8dGMzJDK2VoBrmT6BAbVFzM5pVIxiZBxgHxTO7o8DEttvqYDqtmZU9AEssq72yCgZtr9L0v8H8xDc/0GKbxVndoxrL6bURX+d9J7sBUNhl4xrUQUsN968SSEnCKugRzTHqDn2L0qFTDXrZ+QD4ilHh0i3IIlyTJ787KpDAo= 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=kgfVR2nk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FWEw8U1B; 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="kgfVR2nk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FWEw8U1B" 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 5BUB0WjV956323 for ; Tue, 30 Dec 2025 11:02:38 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=uZ7b55cvQjq GpVCER9aO23V8m+uhwWqcKo+IPNZIPA8=; b=kgfVR2nkirmq64dlE3pnaxzpPnq RpZdbyS+US0wzqfuYlw2iS/bSAIuwhLQyn3QIoZFSmhOJzjWvyvosfUIDZY/E6UQ jM3mH0Vtzh26u6lgThbM3oewzj1oZ6YDd9plpej129x1JwuMJzj758a+AB93bREN cOG+h26/ip8kHSgwFDThXPPdJtTPKp7kPESajMptS4ILuis1/NSyztS6jmuvcULS BZtA8EIq2zVjYf0KyIrtIUVnX0z1sbMdxkruJA4/NRff4RlYKxkKxcUrSYWeSZvh ZWrGZ5eLTIbQMoEHFqSBVttHoboNZs3JuK7dnJDqQZ4PUXCVCB51Q+9BXlA== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bbqk1ax9b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 30 Dec 2025 11:02:38 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-34c704d5d15so19375539a91.1 for ; Tue, 30 Dec 2025 03:02:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767092557; x=1767697357; 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=uZ7b55cvQjqGpVCER9aO23V8m+uhwWqcKo+IPNZIPA8=; b=FWEw8U1BdTVd8ZyCHBfOn6zJrlykyeo+n1QNrFpM49DqRSPN08/6gG2GSW7VCmSUBr 1dx91sDvAq8ya7L6TZLvLNFZC8DDEvmgQgTfilJDmxDWRYOiBIBgMwuq1P2Tj7qRHih8 S6EmtTJAxBT2UKfQ93XHI9h9FsAoS8V3aMvlZQPx0F7sA2zub2QJnb/f52lOmf+aCkQa qJ2LaEk3BHtBM2mmPpWgZNPjWKxo7Lq6yF+UOVkDlfxd9DcLXizhRI+Ao+W8bo82M3rU LcVkZSfmd1yjU/rDMDB2rJrdvDtv93p7ZJRvhsuwV867aXdIvVRDuM8UE4Tx6khY7nei hC5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767092557; x=1767697357; 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=uZ7b55cvQjqGpVCER9aO23V8m+uhwWqcKo+IPNZIPA8=; b=MA2yzWfifSrHWVS7tdFfDI+0GaNLrAP8As/R4iDBxTv91xihO+PwsiQOETLQaQORym 6uCxQSvyXneJ7itFIw13XGBdpoEQodk4rzWCByhUgDZ1X2+8FnUpBJEjJNOe5xVAL9xE BrudJrBR80xw8qEwKBNw1YohJ2QWN6dup4+bh3gmNFigKTHHGpRos4AlbJgESIlbQy+x hkGtGkuSuHMhKbDHYfcGtyLc4M96vOFYIbFe6QlH0kAgbtJQF8TAn4T5qEG+UT85hEA6 yLNdXDGC82KDcJP2+9rYrOMireFyuB5rxOpwRaHaOIxoIA0Ylpqij1KO4DzSkaL+UjLT bscQ== X-Forwarded-Encrypted: i=1; AJvYcCVUV6DKw/Xv5ipIMUerYWrN/LXqRBnlhtnH0m5A+m3/h045Oza81D+aZhpLkRVMKZYeCZEdj8EvzZGhE6M=@vger.kernel.org X-Gm-Message-State: AOJu0YwygaKBE0XTeejg76qhRJfZbmH3nOJbiZmCkZ1nmYM/5s1Iz8/j rYR4wdb0sxURcib9zWTUKi2sSHF0wqWxA97xxXH5veiB8aU5OwyQlibkFe8E7eaG/6Tlrtp6AI0 YLdCqaS/eHrA610ucYdN9GPAeICCD2zh872FkWO6A3N/Z0Br6GDGjn8drshUupEam3z8= X-Gm-Gg: AY/fxX7PeMsHMoxEDzPcBPnrr/zuDp3FQ+CRazx2u5GJDTkUY77Fi+OXdNhQ4B7Zz7M RDVgU6T9lI68FX2vDcmAb/k5wml4IjDGqLu29ADJ+XL9QRCa8LtviYTXT+YCkJR6uI05GBULOOP VZGi0XSFYDcNFIcDRLpU7lr+7eAnBrTTUku49Fl6xefPSe9095TGQHKiCzyJOqKE28/touGLkCO b5lws6ul5ixrVHj3156BjSHD6WNYZWYegkOCf1MVuIgb+y+1JWBI1U/BR7fFmWz6PY0Y+cG2Kyk mg7cqoOE1hWMZYgmuQJh96pikh2lYKJxwdPqZxWkWhQl0GHjnA3VzCcGQzS8nIaIWYdfRcqSya/ 7OLdudMtJ7IxhXOI2QN3Mfq9Tp1ZLwxnwr01rxxO5Zw== X-Received: by 2002:a05:6a20:6a09:b0:371:d67d:e56a with SMTP id adf61e73a8af0-376a9ae2989mr33085237637.57.1767092557440; Tue, 30 Dec 2025 03:02:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IG1CkBNPOEDBq7uLze8A3MeLEdvhLojl1SQfevGINRj4fuvJbn/fzelF4LuaAuwutBx4iWerw== X-Received: by 2002:a05:6a20:6a09:b0:371:d67d:e56a with SMTP id adf61e73a8af0-376a9ae2989mr33085211637.57.1767092556872; Tue, 30 Dec 2025 03:02:36 -0800 (PST) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c3a4deb6f17sm2556908a12.22.2025.12.30.03.02.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 03:02:36 -0800 (PST) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com Subject: [PATCH v3 2/3] misc: fastrpc: Refactor mmap and munmap logic into helper functions Date: Tue, 30 Dec 2025 16:32:24 +0530 Message-Id: <20251230110225.3655707-3-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251230110225.3655707-1-ekansh.gupta@oss.qualcomm.com> References: <20251230110225.3655707-1-ekansh.gupta@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: X5B-mX8ciRW1OPp0lRBDqdHqjU_7yg2d X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjMwMDA5OSBTYWx0ZWRfX21MsAjpEz/gS +VoHV8u1aooMaprEqFbEVTlqqyQ+ZG5VrFC72f3AYcbuwXLNELCazdIhKiS4dQDgj1E6kmO9YXM hs0TjNhpDT1FJj0ZoQQZUw6d99cbi0FVOIlvcq+9VrQ5dB9QkTagd4dND7O53Js+XyObkpJFENc V+tI1L7PybVUDZptV995zxKH6F3OLW6ckJjEKZ4DN17Tof3ovmAl5LTf8rG8dmUZdpSO6uakUoz 5osYwstgN6JAqT0pHpNRkJBOqwJaFBV/v8oyBZS+SBGyTY69XAEiTJEQN1EheGmQ5EhU9weblZi uHZE3FeokdwzuiZkxCZoUMPFayzzBr9QQeV+L1unIh+TlnaiGqA0c3A4+5junq3Ce0ETX5BEclt JcKL170OI6fG1z2icuyAdrfL4r2xZLinl1GamZX65luxJfpDYyH7nMlsAMrnPcPmXgup3gJ21iz lhqkojGC7txZPJiMX2Q== X-Authority-Analysis: v=2.4 cv=Tf6bdBQh c=1 sm=1 tr=0 ts=6953b14e cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=04dbU8GgqVRi9gjLVHMA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: X5B-mX8ciRW1OPp0lRBDqdHqjU_7yg2d X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-29_07,2025-12-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 impostorscore=0 suspectscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512300099 Content-Type: text/plain; charset="utf-8" Refactor FastRPC mmap and munmap handling by introducing dedicated helper functions for DSP-side operations. This change improves code readability and separates DSP invocation logic from buffer allocation and cleanup. Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 110 +++++++++++++++++++++++++++-------------- 1 file changed, 74 insertions(+), 36 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 408fe47e9db7..24064efe5dd8 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -1811,24 +1811,33 @@ static int fastrpc_get_dsp_info(struct fastrpc_user= *fl, char __user *argp) return 0; } =20 -static int fastrpc_req_munmap_impl(struct fastrpc_user *fl, struct fastrpc= _buf *buf) +static int fastrpc_req_munmap_dsp(struct fastrpc_user *fl, u64 raddr, u64 = size) { struct fastrpc_invoke_args args[1] =3D { [0] =3D { 0 } }; struct fastrpc_munmap_req_msg req_msg; - struct device *dev =3D fl->sctx->dev; int err; u32 sc; =20 req_msg.client_id =3D fl->client_id; - req_msg.size =3D buf->size; - req_msg.vaddr =3D buf->raddr; + req_msg.size =3D size; + req_msg.vaddr =3D raddr; =20 - args[0].ptr =3D (u64) (uintptr_t) &req_msg; + args[0].ptr =3D (u64)(unsigned long)&req_msg; args[0].length =3D sizeof(req_msg); =20 sc =3D FASTRPC_SCALARS(FASTRPC_RMID_INIT_MUNMAP, 1, 0); err =3D fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, &args[0]); + + return err; +} + +static int fastrpc_req_munmap_impl(struct fastrpc_user *fl, struct fastrpc= _buf *buf) +{ + struct device *dev =3D fl->sctx->dev; + int err; + + err =3D fastrpc_req_munmap_dsp(fl, buf->raddr, buf->size); if (!err) { dev_dbg(dev, "unmap OK: raddr=3D%p\n", (void *)(unsigned long)buf->raddr= ); spin_lock(&fl->lock); @@ -1869,26 +1878,54 @@ static int fastrpc_req_munmap(struct fastrpc_user *= fl, char __user *argp) return fastrpc_req_munmap_impl(fl, buf); } =20 -static int fastrpc_req_mmap(struct fastrpc_user *fl, char __user *argp) +static int fastrpc_req_map_dsp(struct fastrpc_user *fl, u64 phys, + u64 size, u32 flag, u64 vaddrin, + u64 *raddr) { struct fastrpc_invoke_args args[3] =3D { [0 ... 2] =3D { 0 } }; - struct fastrpc_buf *buf =3D NULL; struct fastrpc_mmap_req_msg req_msg; struct fastrpc_mmap_rsp_msg rsp_msg; struct fastrpc_phy_page pages; - struct fastrpc_req_mmap req; - struct device *dev =3D fl->sctx->dev; int err; u32 sc; =20 - if (copy_from_user(&req, argp, sizeof(req))) - return -EFAULT; + req_msg.client_id =3D fl->client_id; + req_msg.flags =3D flag; + req_msg.vaddr =3D vaddrin; + req_msg.num =3D sizeof(pages); =20 - if (req.flags !=3D ADSP_MMAP_ADD_PAGES && req.flags !=3D ADSP_MMAP_REMOTE= _HEAP_ADDR) { - dev_err(dev, "flag not supported 0x%x\n", req.flags); + args[0].ptr =3D (u64)(unsigned long)&req_msg; + args[0].length =3D sizeof(req_msg); =20 - return -EINVAL; + pages.addr =3D phys; + pages.size =3D size; + + args[1].ptr =3D (u64)(unsigned long)&pages; + args[1].length =3D sizeof(pages); + + args[2].ptr =3D (u64)(unsigned long)&rsp_msg; + args[2].length =3D sizeof(rsp_msg); + sc =3D FASTRPC_SCALARS(FASTRPC_RMID_INIT_MMAP, 2, 1); + err =3D fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, + &args[0]); + + if (err) { + dev_err(fl->sctx->dev, "mmap error (len 0x%08llx)\n", size); + return err; } + *raddr =3D rsp_msg.vaddr; + + return 0; +} + +static int fastrpc_req_buf_alloc(struct fastrpc_user *fl, + struct fastrpc_req_mmap req, + char __user *argp) +{ + struct device *dev =3D fl->sctx->dev; + struct fastrpc_buf *buf =3D NULL; + u64 raddr =3D 0; + int err; =20 if (req.vaddrin) { dev_err(dev, "adding user allocated pages is not supported\n"); @@ -1905,26 +1942,8 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl,= char __user *argp) return err; } =20 - req_msg.client_id =3D fl->client_id; - req_msg.flags =3D req.flags; - req_msg.vaddr =3D req.vaddrin; - req_msg.num =3D sizeof(pages); - - args[0].ptr =3D (u64) (uintptr_t) &req_msg; - args[0].length =3D sizeof(req_msg); - - pages.addr =3D buf->phys; - pages.size =3D buf->size; - - args[1].ptr =3D (u64) (uintptr_t) &pages; - args[1].length =3D sizeof(pages); - - args[2].ptr =3D (u64) (uintptr_t) &rsp_msg; - args[2].length =3D sizeof(rsp_msg); - - sc =3D FASTRPC_SCALARS(FASTRPC_RMID_INIT_MMAP, 2, 1); - err =3D fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, - &args[0]); + err =3D fastrpc_req_map_dsp(fl, buf->phys, buf->size, req.flags, + req.vaddrin, &raddr); if (err) { dev_err(dev, "mmap error (len 0x%08llx)\n", buf->size); fastrpc_buf_free(buf); @@ -1932,10 +1951,10 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl= , char __user *argp) } =20 /* update the buffer to be able to deallocate the memory on the DSP */ - buf->raddr =3D (uintptr_t) rsp_msg.vaddr; + buf->raddr =3D (uintptr_t)raddr; =20 /* let the client know the address to use */ - req.vaddrout =3D rsp_msg.vaddr; + req.vaddrout =3D raddr; =20 /* Add memory to static PD pool, protection thru hypervisor */ if (req.flags =3D=3D ADSP_MMAP_REMOTE_HEAP_ADDR && fl->cctx->vmcount) { @@ -1970,6 +1989,25 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl,= char __user *argp) return err; } =20 +static int fastrpc_req_mmap(struct fastrpc_user *fl, char __user *argp) +{ + struct fastrpc_req_mmap req; + int err; + + if (copy_from_user(&req, argp, sizeof(req))) + return -EFAULT; + + if (req.flags !=3D ADSP_MMAP_ADD_PAGES && req.flags !=3D ADSP_MMAP_REMOTE= _HEAP_ADDR) { + dev_err(fl->sctx->dev, "flag not supported 0x%x\n", req.flags); + + return -EINVAL; + } + + err =3D fastrpc_req_buf_alloc(fl, req, argp); + + return err; +} + static int fastrpc_req_mem_unmap_impl(struct fastrpc_user *fl, struct fast= rpc_mem_unmap *req) { struct fastrpc_invoke_args args[1] =3D { [0] =3D { 0 } }; --=20 2.34.1 From nobody Sun Feb 8 17:42:41 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 14F031EEE6 for ; Tue, 30 Dec 2025 11:02: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=1767092563; cv=none; b=aCnyNpsHnEcbxX8wYNoKrb5/S0jFxXgAM+s2o2JhmNqwjj4bG12+UrYFCY2IAi47lbKpDBgR4fD6SilRJ2DAjtlIA5jPXb3W79uDXKwnbOM3AweRAman/zwADQjsBSeJIxrnLLQlX/xsBfFfZVlx/NxbDLTOpcSjlWwmcWjaorA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767092563; c=relaxed/simple; bh=kzaUN+x2tytlHR+0KUUHjrghzg/fT+mbgBEGSbNP1ag=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Nt8I319F2hUQT1LLmldXy8fBADT4LpEhTNjH6b7oLbrOaJZkAku1eCXNefaZtD7S+DDxiDcL2soH5M0hhIg5MsNYlU1ziLKWaIpTFLkdz+vYWMcHzUHqJ8dFS2ZkYSGvkAETzqC4/8vtkSk3WXYrq5TmuQbpcubtnRgvfXNXpoI= 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=pPjnz7Gy; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=epwWxpOG; 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="pPjnz7Gy"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="epwWxpOG" 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 5BU9HXZb2380826 for ; Tue, 30 Dec 2025 11:02:41 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=VYwQ/Hx44kd wcs759Yx8Gs08E+Q2dSlIoFnhLpXFKqU=; b=pPjnz7GygYTWoDKptwvj3aPNlKv I34MNm9IYPfIHWBK2zVtO8L/GpuxXjM5dP7vmLNFEnCeGzi1CvdpiFFhcbttQpBk K5L2biLIiclFdHxUBfsBmQvIAg7ErWGwH7vKiGA/wjVlwSXgPGBFCnf2dPfPYDQN LxBc07Vc8Aix8C5xBYrWRq/lARdQjng3XCDzUt4kchFcEBI7lPl5xjiS6f8qOp0c bwNHupfQWHdcFOZzzz3LL26vDnn1Juo77P9oMl2hj07C0B1vOUfgAlBOKYeYjfkZ Ruk30Lu9dNze0bjao1xuO4aXYBzKwYMsZltYLEFB12/pZrKWCUJDGiqTFIg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bbqk1ax9j-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 30 Dec 2025 11:02:41 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-7f66686710fso23023284b3a.3 for ; Tue, 30 Dec 2025 03:02:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767092560; x=1767697360; 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=VYwQ/Hx44kdwcs759Yx8Gs08E+Q2dSlIoFnhLpXFKqU=; b=epwWxpOGMhG3mFnBl8rmJ6/j2vbL62wbt+U30ptSxVJDd5qsxquc7x4xblaEUvb3Sd G35cZAkIubGuZom5VQPubBI/gOiqUqy3NK8BWEwY5bntFnw3ts+VrpHxtWenfMr45vtu um73uspxeGAUkr5pSYhbp326VSqKs+XJK0dOmIDI4zZ41TI3sFYJBZw2WvwwsXLGJ/RQ MpNF7NXOJmmqQiWRg+NIWv+1OL/1cpaDeTKG6oNsx/DfFq9bpcwkITP6OG80qnvxlzEn BW2KeUL4BGu6OqM+5CFy5CM86CWiD2CgqsVvEeVWmww+f54HOW0h3O0Z4WYa62K2eUmu tI6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767092560; x=1767697360; 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=VYwQ/Hx44kdwcs759Yx8Gs08E+Q2dSlIoFnhLpXFKqU=; b=oYeMC3WhUeWypZSSXR54wyk9rbt0E2e7SYtrHrbQz1LQztjDtTsOHsugyaKxEkJi8Z WmlFz0RuKyDH6Sg75TszO28bzs85uw76tO1EnnQMeY1xgFy7lNgMdaEuzq8qV9G8A20I sloFCdcysyGHIsysf7DZKFEOwON2YGc2I05xaW/mmdgOVc3FXGsCa8p5vU4bHZelWR+o Vz5IG2CESSJ+pJ+Q8ioKb3zOBxHB2Hb9EQafEhyyE86yZ8eUG/aNVcM44duqNH2ou8aq BnPpQH8Dgm9bvAZlaww8HwLdUGjkJzvHjij8+spR872wS2dOmwLx9LXhbiZn0ZGIYAgb LMuw== X-Forwarded-Encrypted: i=1; AJvYcCXEgfmdAaf7p3b0rilAU7B+ZPIxYngpwGo0o2FYSP65RIhe8FTloP2ys6X+SF7i0VhUx5moyLcmzQK1W30=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7M83tx0LirGwvmtcVHXmGLjuN/pkazN9PDyW3GkiBs05kL44i pLaEt/UAC/pj1u4qJt479qNK1Nf0zFne2URXH79t8RGaaePL4GZsuYtLNedU43qvM2mABnmBXFl gf8JppCAUTUE4EE5qI/G1F+QFobYpG2gqq5ud9Mr2b25ynW6L4QjAGU5HhTJt63i/x+k= X-Gm-Gg: AY/fxX6t0l7qlKCj+PFZ92ds6WfKzGAwKxtSZovJmqQtUqf2Vf9dq1zaZ1+XDQH4qs6 yKlMFjp8N5MxdUWYyY3EFf/ASkzm8Y/lSsZPJmPOtcCFGzDti2W/DHaV6g3sesag5bAYN3tu4sq iKoet9lLu8OTyRGFt4rHVAxl4qlEwZhh3MzYOjGOZr6/8fbzMPPaXYMmq+2zLUriGBhItNoaHon VGgJ1U4TSjMV2tjLNBsSTGQViRXO/mQ3JEQyUXh0piiHDeFzW6xF9OtyGECGufWOADzozOhvlMV p6K+8J3dI6z63nmJQ6Iqv0cpkQ2W7pHjBrhEJJiss2bBBFxuFpI6FKca/5LLTsR9UCz5q2f8x7N mfLjZJUCuUTPpCuwQWhzl/3X4j9K7pD1wKTxtTrc6Sw== X-Received: by 2002:a05:6a20:3ca8:b0:33c:2154:d4f4 with SMTP id adf61e73a8af0-376aa500867mr30883650637.49.1767092560452; Tue, 30 Dec 2025 03:02:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IFhhWXGKYIxwN0TmVgGtWsqgsEy8WyS+QDcMuCfhzukRTbnwE5KpXtMVJAEy0hB11Qi0NV12w== X-Received: by 2002:a05:6a20:3ca8:b0:33c:2154:d4f4 with SMTP id adf61e73a8af0-376aa500867mr30883629637.49.1767092559966; Tue, 30 Dec 2025 03:02:39 -0800 (PST) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c3a4deb6f17sm2556908a12.22.2025.12.30.03.02.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 03:02:39 -0800 (PST) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com Subject: [PATCH v3 3/3] misc: fastrpc: Support mapping userspace-allocated buffers Date: Tue, 30 Dec 2025 16:32:25 +0530 Message-Id: <20251230110225.3655707-4-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251230110225.3655707-1-ekansh.gupta@oss.qualcomm.com> References: <20251230110225.3655707-1-ekansh.gupta@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: L4jIvgmUrYKKIqyj2a2nXq7TNAmK2Gol X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjMwMDA5OSBTYWx0ZWRfXyYzVht5QhsnB 5Y7yNNPKM88kRfsjenfT/Cqp/UWCCZndA0d2aqV1IZoDT2EmsU+YMzkmq2zunVS7RHW2q0Oudy4 qg3niocIVq68Tt9ojPJg9/FXBZ7aBb7AEfP6WA3EDJF81casyypGXATMQzKP0367uQCePOYN+zi Obhwk3R4afvhVARazNQu4AVJpd8SUcAw6eMWF1517r4fj+sGh08kGx83QauBecnuVO4h94PMXxQ jzEdXJwCIMzk/fTj4J0qDII5Ili618u5B7LhC04wuvgV+FFfulXd4j8MJqU9zK+prulfT8YoCIi c2tp+IdOJPUtVJVF1ecTZ4VqwnnmWReGLOirLES9ADkk/6mO3AV2YiaaX88jwspRU8vlKCnt0Kd mh0YLPpDfenb3S14O4UQyANCMYyDCd2qhipEu5GNXuAFMEdi4n1xuawXOSdw7x+LGj0wwuFtzcv TCmuW2I1bPjB63EM1zw== X-Authority-Analysis: v=2.4 cv=Tf6bdBQh c=1 sm=1 tr=0 ts=6953b151 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=LDv6qzVS_9dTolnp15UA:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: L4jIvgmUrYKKIqyj2a2nXq7TNAmK2Gol X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-29_07,2025-12-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 impostorscore=0 suspectscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512300099 Content-Type: text/plain; charset="utf-8" Currently, FastRPC only supports mapping buffers allocated by the kernel. This limits flexibility for applications that allocate memory in userspace using rpcmem or DMABUF and need to share it with the DSP. Add support for mapping and unmapping userspace-allocated buffers to the DSP through SMMU. This includes handling map requests for rpcmem and DMABUF-backed memory and providing corresponding unmap functionality. Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 97 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 86 insertions(+), 11 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 24064efe5dd8..b677e485bade 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -1854,8 +1854,10 @@ static int fastrpc_req_munmap_impl(struct fastrpc_us= er *fl, struct fastrpc_buf * static int fastrpc_req_munmap(struct fastrpc_user *fl, char __user *argp) { struct fastrpc_buf *buf =3D NULL, *iter, *b; + struct fastrpc_map *map =3D NULL, *iterm, *m; 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; @@ -1869,13 +1871,42 @@ static int fastrpc_req_munmap(struct fastrpc_user *= fl, char __user *argp) } spin_unlock(&fl->lock); =20 - if (!buf) { - dev_err(dev, "buffer not found: addr=3D%p [len=3D0x%08llx]\n", + if (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; + } + + spin_lock(&fl->lock); + list_for_each_entry_safe(iterm, m, &fl->maps, node) { + if (iterm->raddr =3D=3D req.vaddrout) { + map =3D iterm; + list_del(&iterm->node); + break; + } + } + spin_unlock(&fl->lock); + if (!map) { + dev_dbg(dev, "buffer/map not found addr=3D%p len=3D0x%08llx\n", (void *)(unsigned long)req.vaddrout, req.size); return -EINVAL; } =20 - return fastrpc_req_munmap_impl(fl, buf); + err =3D fastrpc_req_munmap_dsp(fl, map->raddr, map->size); + if (err) { + dev_dbg(dev, "unmap error: fd=3D%d, raddr=3D%p\n", + map->fd, (void *)(unsigned long)map->raddr); + spin_lock(&fl->lock); + list_add_tail(&map->node, &fl->maps); + spin_unlock(&fl->lock); + } else { + fastrpc_map_put(map); + } + return err; } =20 static int fastrpc_req_map_dsp(struct fastrpc_user *fl, u64 phys, @@ -1989,25 +2020,69 @@ static int fastrpc_req_buf_alloc(struct fastrpc_use= r *fl, return err; } =20 -static int fastrpc_req_mmap(struct fastrpc_user *fl, char __user *argp) +static int fastrpc_req_map_create(struct fastrpc_user *fl, + struct fastrpc_req_mmap req, + char __user *argp) { - struct fastrpc_req_mmap req; + struct fastrpc_map *map =3D NULL; + struct device *dev =3D fl->sctx->dev; + u64 raddr =3D 0; int err; =20 - if (copy_from_user(&req, argp, sizeof(req))) - return -EFAULT; + err =3D fastrpc_map_create(fl, req.fd, req.size, 0, &map); + if (err) { + dev_err(dev, "failed to map buffer, fd =3D %d\n", req.fd); + return err; + } + + err =3D fastrpc_req_map_dsp(fl, map->phys, map->size, req.flags, + req.vaddrin, &raddr); + if (err) + goto err_invoke; =20 - if (req.flags !=3D ADSP_MMAP_ADD_PAGES && req.flags !=3D ADSP_MMAP_REMOTE= _HEAP_ADDR) { - dev_err(fl->sctx->dev, "flag not supported 0x%x\n", req.flags); + /* update the buffer to be able to deallocate the memory on the DSP */ + map->raddr =3D (u64)raddr; =20 - return -EINVAL; + /* let the client know the address to use */ + req.vaddrout =3D raddr; + dev_dbg(dev, "mmap OK: raddr=3D%p [len=3D0x%08llx]\n", + (void *)(unsigned long)map->raddr, map->size); + + if (copy_to_user(argp, &req, sizeof(req))) { + err =3D -EFAULT; + goto err_copy; } =20 - err =3D fastrpc_req_buf_alloc(fl, req, argp); + return 0; +err_copy: + fastrpc_req_munmap_dsp(fl, map->raddr, map->size); +err_invoke: + fastrpc_map_put(map); =20 return err; } =20 +static int fastrpc_req_mmap(struct fastrpc_user *fl, char __user *argp) +{ + struct fastrpc_req_mmap req; + int err; + + if (copy_from_user(&req, argp, sizeof(req))) + return -EFAULT; + + if ((req.flags =3D=3D ADSP_MMAP_ADD_PAGES || + req.flags =3D=3D ADSP_MMAP_REMOTE_HEAP_ADDR)) { + err =3D fastrpc_req_buf_alloc(fl, req, argp); + if (err) + return err; + } else { + err =3D fastrpc_req_map_create(fl, req, argp); + if (err) + return err; + } + return 0; +} + static int fastrpc_req_mem_unmap_impl(struct fastrpc_user *fl, struct fast= rpc_mem_unmap *req) { struct fastrpc_invoke_args args[1] =3D { [0] =3D { 0 } }; --=20 2.34.1