From mboxrd@z Thu Jan 1 00:00:00 1970 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 5645C35200D for ; Fri, 3 Jul 2026 05:16:15 +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=1783055781; cv=none; b=IiZLc8vqlMdjt9pRMKgw0Z42s/aNU83AfiwWhg+ezuOWcpyELRsrFzc0BG8UgV8lEM085yl+tDvgIXcWCYvvlKs+VAxTAqUE0FmMlAP+380DZ0zQ/V9ZMaAyaUARYiMn8LJjeLj3ji8IAn5CmaPG3wOyjViEqMq4rcy9FiKrUH0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783055781; c=relaxed/simple; bh=tWRuEZlL8nvpwQy3yh7T/zBn4uPsi4eon4phEwUfkMw=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=OGIHrv0svOn2qGiDZcqIPhUuf/1Wu8k+EmIC0CU4hiNGdGWf4a4o6ZDJU5BQAZ//SrGfuKzbzlyeVzQuVmvp8MbcPpUMPr9DjKj5XY8Vr9KKfmqsN3XtBjDFcAxn4jf/0x1id3Ct8mi35CvD+5xlYUrFqtphCrieo6t7FJoI/xg= 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=JTDdPWCd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jJc9Ewfr; 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="JTDdPWCd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jJc9Ewfr" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66342rKb2706140 for ; Fri, 3 Jul 2026 05:16:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 7je18tu2quK+pqEUyIaDqokYfNsUVcOnejDyULff2vw=; b=JTDdPWCdAlBz8IDX 6m3WlsRH+k11kXRRGIpBZtFmZAg54oxhxU65SplmVRd+9Ghbhx/9yaffw4DHTi5q pP1IKBlJ4oRdJ4l6AjkE7NtvdO04YsqwGcKTFA+YTMCBr6cORDZSa+VD6BhPe1Pv nz8qohOa+tmnJ8oupVyudx988edq/bprvsZK+qe/BiNKrEZYHBzmOyxbEvL2yyGO hQzpWm7NGk/LlvXWKrT3ldr16mX6xpgxZHEwDiSmVQNgqu8jLuEq2ZpUFgr+NRXA /g1ow6OqsnEWH6YqoaA5iautPNJYnfMCseibZVCR9fSNZ3kjY34eESPYAEKZ/vWf sG2B/A== 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 4f5n944cr4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 03 Jul 2026 05:16:14 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2c9a700dc0eso1738245ad.1 for ; Thu, 02 Jul 2026 22:16:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783055774; x=1783660574; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=7je18tu2quK+pqEUyIaDqokYfNsUVcOnejDyULff2vw=; b=jJc9EwfrIJZ7eppL7JNks4s6YRxtpAJL3/La+Mgte6/VzsZqVSjjnF6njr9s++ny4J 2C4Smc+7Zr0mJ5qPjKXtBGRFR2GMTc78UE6PD2ahGnVazg6a6bpZj2I50n3dG5yXCarN mej9vYU8mJzIq1yGdT6dQBZ3GwZiS7zwIw4LE+iveSKOfO34oKl+N69rWYAixXncLW62 DTjgqLtceWjEzJYRP6IgURcJq5lm4QvKtLmNmJK++Ebh7qd8XwF+nlqlxV/dtpKHB3+T i/MWb0ZgwGF8VKm+zDB+bVXJ82a/Jokprx/rJzXivuGZ1AwCjanH6Oi6u3i9JGfu8E0O KE/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783055774; x=1783660574; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7je18tu2quK+pqEUyIaDqokYfNsUVcOnejDyULff2vw=; b=qBGFU4pdRISCYF3LI3kDC8w+jXQOHqm+JYE+NUbPmAGKYPjgfKdPTGcvnAfv+4HXdt 9HuaaBVNWZQW99VIbo/Phn3wfzh3LlIquMYLYayJSRlLZKMI+Tc2piw2ZtsIF1ZfUkh6 v9GlGMfRKpNx6piJ+8yT3zv+NPnOAIGCBTb+59LNCcqmeXp5Xw6ZnCMKGXLsg0kMzg21 IfrdjWpXD/oTjBacrcIrF5HAv16z7dsQJXPtbaOgy800dbvnuh5qwG6JSqMSq9GFPGrW y/e8I/EiOmilYzU+P1PFIfFL1EUt36Dfch1DSULbuFC1B+qPx1DUqgfY+NtvQOoQSo1Z Z/WQ== X-Forwarded-Encrypted: i=1; AFNElJ8lmtYKL7TdDDBrhEKKfN2LpRxVT06MlVPJV4fdkZD/F+1eZRMZE+Kfm5Uh3DYTbWZDwrtqOJHm9bFn5ng=@vger.kernel.org X-Gm-Message-State: AOJu0YzMNuA3GMEpgoJ3o0rBypUYdnA6yFtz3h++UvlZ4jrDTuCKomSk 4mMbvuYoL2aUjGMHyLheT9BMJXzi+vqH0I1G2vAC4ibyA2MaqjLZuQyv7kYtj55K4/xnnX7yU4E KBwFcdNL4d3p2gxnBtleRfiWyYMv0t+Yzza8wEADVPYB+MlSwiHC6ewTRkmXcqPO71/E= X-Gm-Gg: AfdE7cmczjclRaxC643MqYouv9WH29/81gGj/m98H8b6oGUFK32cNiDTWqILC7cRJqo DkTxNnwyrf8sUwl/JNgFADWC17wlOyav4sRFL8+tp1q8gfAzorW0AOJlv/tyf8XVyAbRuMTUREq nrd6I+9vBEU0Uq0szUASExFm7ogeXiw7IYCFnhbu1bOntEF5cyeJNJ7+beLwc+mUUN5I7/o6vrU wviVUZpyNeI/NFdnXW7I0pSMsZ/89B8DA4mMWfGkRuCtyuUnpGQzZ+KZtgb+Mx/Lf6HJWGNQI8Q 3xo8kDBo0/6h1Yn8CMW6DioNgF8HJoHkDVuhFHBT5mYhvXSES37bnMd6YvKHoCwrBrUfk772ESS QzHezIcgGkd9Zd/A/uaUP1C7gegGf7ccM1HHua/Pa X-Received: by 2002:a05:6a21:7314:b0:3b3:fc6:6226 with SMTP id adf61e73a8af0-3bfed237936mr11551299637.24.1783055773723; Thu, 02 Jul 2026 22:16:13 -0700 (PDT) X-Received: by 2002:a05:6a21:7314:b0:3b3:fc6:6226 with SMTP id adf61e73a8af0-3bfed237936mr11551263637.24.1783055773170; Thu, 02 Jul 2026 22:16:13 -0700 (PDT) Received: from [10.204.78.220] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30f0b813d37sm16467977eec.10.2026.07.02.22.16.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Jul 2026 22:16:12 -0700 (PDT) Message-ID: Date: Fri, 3 Jul 2026 10:46:06 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1] misc: fastrpc: avoid duplicate DMA mappings in fastrpc_create_maps() To: Jianping Li , Srinivas Kandagatla , Amol Maheshwari Cc: Arnd Bergmann , Greg Kroah-Hartman , Dmitry Baryshkov , Ling Xu , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, stable@kernel.org References: <20260625080832.17477-1-jianping.li@oss.qualcomm.com> Content-Language: en-US From: Ekansh Gupta In-Reply-To: <20260625080832.17477-1-jianping.li@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzAzMDA0NiBTYWx0ZWRfXzR9AuUpbarWg j2KWgsP5GbOsdqpOQWMBkz2QmqBkuEKlg8Agg5w5RVaVX4JuO3vN8k/kM4tiRb/ymjJErkyjKtz 2j85w7Lk2RxCCwjyuQ2St3NYLJRnL2Ihlrvy8f8L/5sE6s9huGgvBeMRTmdMGeGcDOtYYLnBxWj VUtm4h6GqmWwP5pRV1ZHd43rZH7Uji0xAOyCPcM2WcgmvJekzsDG/kq29FFURV7ui4/O3CU5SS5 JVK+hh5s/fZ/e9CwyQdVSFyBlvYnrcFhSxw9k2mhHCQCjLchevkuBDv/h7+Yr7cGy9OfGD9fnl1 Jr7NuwQjKvcJxpnHJCUBp7biZ9IBqzBr3FZvvwFYKGGuxUViBCOgEriP7Zba53xOyUdkk7du8vP 90soQW+NB8kbPuhPktksBdKEymY18BEkqHnUpq+1bV1txqupfYkaP5YShK9MbKKO+MUjETFIj8A tFO6++HCNPsrrip/jaQ== X-Authority-Analysis: v=2.4 cv=Lv+iDHdc c=1 sm=1 tr=0 ts=6a47459e cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=ywQd6nkPfMLC1FByFVQA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: cEN-sb77udqt_uk1UIsbQPdxvPhM3pme X-Proofpoint-Spam-Info: AW1haW4tMjYwNzAzMDA0NiBTYWx0ZWRfX35wf4jvfn+fY njrsUBwmB6s0fepsp0O7Ka7aCb1wrfxzNSnJ1DWKcz+lcdFtFgQhrOukJRmB+duHHj3KrCj41wW hJ/H+64r2IH9nC70t0H+/1CyrKkrcw0= X-Proofpoint-GUID: cEN-sb77udqt_uk1UIsbQPdxvPhM3pme X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-07-03_01,2026-06-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 spamscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 suspectscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607030046 On 25-06-2026 13:38, Jianping Li wrote: > fastrpc_create_maps() performs map lookup only for buffer > arguments (i < ctx->nbufs) via fastrpc_map_create(). For > arguments beyond this range, no lookup is performed, which > can result in duplicate DMA mappings for the same file > descriptor. > > Additionally, if the same file descriptor is passed multiple > times within a single invocation, performing lookups with > reference counting would increment the reference multiple > times, while fastrpc_put_args() would release it only once, > leading to an imbalanced reference count. > > Fix this by allowing fastrpc_map_create() to control whether > the lookup should take a reference. For arguments beyond > ctx->nbufs, the lookup is performed without taking a > reference, ensuring that existing mappings are reused > without introducing duplicate DMA mappings or reference > count imbalance. > > Fixes: 10df039834f84 ("misc: fastrpc: Skip reference for DMA handles") > Cc: stable@kernel.org > Signed-off-by: Jianping Li > --- > drivers/misc/fastrpc.c | 22 +++++++++++----------- > 1 file changed, 11 insertions(+), 11 deletions(-) > > diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c > index a9b2ae44c06f..2622a1360a65 100644 > --- a/drivers/misc/fastrpc.c > +++ b/drivers/misc/fastrpc.c > @@ -924,9 +924,9 @@ static int fastrpc_map_attach(struct fastrpc_user *fl, int fd, > } > > static int fastrpc_map_create(struct fastrpc_user *fl, int fd, > - u64 len, u32 attr, struct fastrpc_map **ppmap) > + u64 len, u32 attr, struct fastrpc_map **ppmap, bool take_ref) > { > - if (!fastrpc_map_lookup(fl, fd, ppmap, true)) > + if (!fastrpc_map_lookup(fl, fd, ppmap, take_ref)) > return 0; > > return fastrpc_map_attach(fl, fd, len, attr, ppmap); > @@ -999,23 +999,23 @@ static int fastrpc_create_maps(struct fastrpc_invoke_ctx *ctx) > int i, err; > > for (i = 0; i < ctx->nscalars; ++i) { > + bool take_ref = true; bool take_ref = i < ctx->nbufs, also add a comment stating why reference should be skipped for DMA handles.> > if (ctx->args[i].fd == 0 || ctx->args[i].fd == -1 || > ctx->args[i].length == 0) > continue; > > - if (i < ctx->nbufs) > - err = fastrpc_map_create(ctx->fl, ctx->args[i].fd, > - ctx->args[i].length, ctx->args[i].attr, &ctx->maps[i]); > - else > - err = fastrpc_map_attach(ctx->fl, ctx->args[i].fd, > - ctx->args[i].length, ctx->args[i].attr, &ctx->maps[i]); > + if (i >= ctx->nbufs) > + take_ref = false; > + > + err = fastrpc_map_create(ctx->fl, ctx->args[i].fd, ctx->args[i].length, > + ctx->args[i].attr, &ctx->maps[i], take_ref); > if (err) { > dev_err(dev, "Error Creating map %d\n", err); > return -EINVAL; > } > - > } > + > return 0; > } > > @@ -1508,7 +1508,7 @@ static int fastrpc_init_create_process(struct fastrpc_user *fl, > fl->pd = USER_PD; > > if (init.filelen && init.filefd) { > - err = fastrpc_map_create(fl, init.filefd, init.filelen, 0, &map); > + err = fastrpc_map_create(fl, init.filefd, init.filelen, 0, &map, true); > if (err) > goto err; > } > @@ -2100,7 +2100,7 @@ static int fastrpc_req_mem_map(struct fastrpc_user *fl, char __user *argp) > return -EFAULT; > > /* create SMMU mapping */ > - err = fastrpc_map_create(fl, req.fd, req.length, 0, &map); > + err = fastrpc_map_create(fl, req.fd, req.length, 0, &map, true); > if (err) { > dev_err(dev, "failed to map buffer, fd = %d\n", req.fd); > return err;