From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CEB7F346A10 for ; Wed, 10 Jun 2026 17:55:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781114115; cv=none; b=Vpbj0OMbEOPxrZ95WvjowfTsv/58Flpt3I3p7IWuJoHdLJDehayTk/1yUNIn5TxDo999Ers7r4smnMrM6GngqYDgXEg07/YfABGrfrTOK758Uo8ZwYkhAlOG5263T85EJKGYWfJiW4NEqCgA1T9frAzrbWYjE8SQMAfuzOw3hmg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781114115; c=relaxed/simple; bh=3FBv/EOGjeC0r39H/l8rvAlfT1jWGq5iy39JWbN5UhA=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=MwTGbAFAz81NKlRvPIWlc3XzS3dKYcX1nSrgktnmQh1nhj6bbBVewQmZTliVRz8h6BIwbOkxRencbJS1Tmx1TFgdvZ3jKywaCFhMXj201s2+UWayoXGmkKVS7fcTOfNwIQKT6SNK0w2jqMN8FINikoDLSA5JjQgyZLfrehDuWpE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ndufresne.ca; spf=pass smtp.mailfrom=ndufresne.ca; dkim=pass (2048-bit key) header.d=ndufresne-ca.20251104.gappssmtp.com header.i=@ndufresne-ca.20251104.gappssmtp.com header.b=JBvTxIE3; arc=none smtp.client-ip=209.85.222.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ndufresne.ca Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ndufresne.ca Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ndufresne-ca.20251104.gappssmtp.com header.i=@ndufresne-ca.20251104.gappssmtp.com header.b="JBvTxIE3" Received: by mail-qk1-f180.google.com with SMTP id af79cd13be357-915aa0a9293so13936085a.1 for ; Wed, 10 Jun 2026 10:55:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20251104.gappssmtp.com; s=20251104; t=1781114113; x=1781718913; darn=vger.kernel.org; h=mime-version:user-agent:autocrypt:references:in-reply-to:date:cc:to :from:subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=TFzr6Ap8q6XOCl46PeL7Sqp+9/TMWSjPVAD+5M0vgVw=; b=JBvTxIE3XGk3vVPMH7Dt3U2BZAkpcceFDgS4rNeqtT+ZegZdCYH/4bn4zdfmI23A0W GcBhM1EhkLqTxC9B57meRh7KMJKq/PDQkPBq3TfdVxQrK8LyEzbPAHyVR0p0lxd5gfEd IMTPDqBtRLqgt/fZjUt+2fwcvAb4r/wrPg1EMsZxYJJ5YnkVjkYzutfQ4ngADrlJmiv2 x8cGP3uKKK6vxfT54/3+F1PY/+nPtOcABwWKi7dZztFj9MKt0hUBcrsQWqwDKLut6BVt +vIVPGLUMGVs4nln/Z9RIQTzGiBWstJPa/YDgUUKLcHshWhEWZJWMou4gVduunKyrMg6 /+Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781114113; x=1781718913; h=mime-version:user-agent:autocrypt:references:in-reply-to:date:cc:to :from:subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TFzr6Ap8q6XOCl46PeL7Sqp+9/TMWSjPVAD+5M0vgVw=; b=dqXNFuTLWWyz7T96FZRvN/7HmoL4fAZvJHN0EVeqkUrwbUnZgrS86BLFq38z8uyoGb smn8coIUpUS1MoZ95yJldcNj69JRvMZujewuFxefN74g/5npxLDYgDkyAfZY0wxKs1Bj BLlKdC9mtk1eRWfK5ysdDRt2z1IeIddqRevnFbB7i+LmBNRUYr4ep2dlCY3quF1vTmBh CwNeCZo5srRai/YxxB2oarWsXfKeNnzkjb+D65Y1hHjwQKgB84mEbfeNCf05rDoRh3vv +YlivDkZ16pN8cUI0+sFH3/xiEX6zMvBhO9lbTMjSEzEZae3yhn7Oo1R8S2g8l6PW5Up Cuow== X-Forwarded-Encrypted: i=1; AFNElJ/OcGtyCF4xxIkyKypplMSpRZXsKu5xOECXuq83MpzRIK2YpCaG5SioSOczIcMQcwjUDMklv3FcWm8CyIM=@vger.kernel.org X-Gm-Message-State: AOJu0YxGpbhMKUJVpLeGcOyFfMEsCaIRO7xqtrr6J6laPGSNSfAvoRXx /2lEXCiXMNrN8wyYJ2h4HPrZjKa3Hz2N1MeSptgMJm7jMSL3APflGtDaRUZVj3AMyFo= X-Gm-Gg: Acq92OHDtkDqsvQa9p/3/Xs8+1IGAzXcXPVwiEU9hjnna2Q48BnFgmGAOezPP9M6Gt3 NAqIwKkmfNMfYclzG6vRJZLMVUySeYh84xFug4Qq8qq9+moBQQ6yyj49tuO0sCWn5/+RYpPqQif H4kz66GYmg9k+J2y7KO3TYfBCNPep23xFl3g/AjhVYIoQbtTXhUI/wiMZrTBcCN1uEXFECrMHVs PGNnvmN29KiNVREbiZcnfDGD+87vHcl99y4wnFQzztownkQRy2YBSWSjPCCqpktkEZSpkLB8QRj JSouXA4WnA+OjinPrVDgoaU9KaKLcFAF1y3HnP//mpVqukYFECm62N7HqmNmN3aP0DJMdJr/MPw 6E61yfMy4JFavdT3n+AWp0w5+kzNPBknkEVUQxQKyw9Vs1c70J2+Z3sfE9GgZnFVGdf6724mFoV olZrabDijFaQ8gXQx9hengNqkUo3u3EU2Q3wj5auf3jMfxxxKTLIYhbJQlKyB46muZInQUTKDRx Xl+yZo= X-Received: by 2002:a05:620a:4625:b0:913:dcd2:f117 with SMTP id af79cd13be357-915ad2f40aamr3123760185a.24.1781114112689; Wed, 10 Jun 2026 10:55:12 -0700 (PDT) Received: from ?IPv6:2606:6d00:15:e06b:3a7c:76ff:fea1:2ac0? ([2606:6d00:15:e06b:3a7c:76ff:fea1:2ac0]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a21f871sm2515222585a.12.2026.06.10.10.55.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 10:55:11 -0700 (PDT) Message-ID: <0e3b9cdb9d8bd692290dfabafb32d7faa5bd50f8.camel@ndufresne.ca> Subject: Re: [PATCH v6 1/2] accel/rocket: Fix error path handling in rocket_job_run() From: Nicolas Dufresne To: ZhaoJinming , Tomeu Vizoso , Oded Gabbay Cc: Sumit Semwal , Christian =?ISO-8859-1?Q?K=F6nig?= , Jeff Hugo , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, stable@vger.kernel.org Date: Wed, 10 Jun 2026 13:55:09 -0400 In-Reply-To: <20260610071045.3414828-1-zhaojinming@uniontech.com> References: <20260610061915.1CA281F00893@smtp.kernel.org> <20260610071045.3414828-1-zhaojinming@uniontech.com> Autocrypt: addr=nicolas@ndufresne.ca; prefer-encrypt=mutual; keydata=mDMEaCN2ixYJKwYBBAHaRw8BAQdAM0EHepTful3JOIzcPv6ekHOenE1u0vDG1gdHFrChD /e0J05pY29sYXMgRHVmcmVzbmUgPG5pY29sYXNAbmR1ZnJlc25lLmNhPoicBBMWCgBEAhsDBQsJCA cCAiICBhUKCQgLAgQWAgMBAh4HAheABQkJZfd1FiEE7w1SgRXEw8IaBG8S2UGUUSlgcvQFAmibrjo CGQEACgkQ2UGUUSlgcvQlQwD/RjpU1SZYcKG6pnfnQ8ivgtTkGDRUJ8gP3fK7+XUjRNIA/iXfhXMN abIWxO2oCXKf3TdD7aQ4070KO6zSxIcxgNQFtDFOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1Z nJlc25lQGNvbGxhYm9yYS5jb20+iJkEExYKAEECGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4 AWIQTvDVKBFcTDwhoEbxLZQZRRKWBy9AUCaCyyxgUJCWX3dQAKCRDZQZRRKWBy9ARJAP96pFmLffZ smBUpkyVBfFAf+zq6BJt769R0al3kHvUKdgD9G7KAHuioxD2v6SX7idpIazjzx8b8rfzwTWyOQWHC AAS0LU5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAZ21haWwuY29tPoiZBBMWCgBBF iEE7w1SgRXEw8IaBG8S2UGUUSlgcvQFAmibrGYCGwMFCQll93UFCwkIBwICIgIGFQoJCAsCBBYCAw ECHgcCF4AACgkQ2UGUUSlgcvRObgD/YnQjfi4+L8f4fI7p1pPMTwRTcaRdy6aqkKEmKsCArzQBAK8 bRLv9QjuqsE6oQZra/RB4widZPvphs78H0P6NmpIJ Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-Xq/WDBnnQBcMXRcBkujo" User-Agent: Evolution 3.60.2 (3.60.2-1.fc44) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --=-Xq/WDBnnQBcMXRcBkujo Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Le mercredi 10 juin 2026 =C3=A0 15:10 +0800, ZhaoJinming a =C3=A9crit=C2=A0= : > In rocket_job_run(), after taking an extra fence reference for > job->done_fence via dma_fence_get(), the error paths have three bugs: >=20 > - The dma_fence reference held by job->done_fence is never released, > =C2=A0 causing a reference leak. > - pm_runtime_get_sync() increments the usage counter even on failure, > =C2=A0 but the error path does not decrement it, leaking the runtime PM > =C2=A0 reference and preventing the NPU from suspending. > - A valid but unsignaled fence is returned to the DRM scheduler, > =C2=A0 which triggers WARN("Fence ... released with pending signals!") > =C2=A0 when the scheduler drops its reference. >=20 > Fix by replacing pm_runtime_get_sync() with pm_runtime_resume_and_get() > which auto-balances the usage counter on failure, releasing both fence > references on error, and returning ERR_PTR(ret) instead of the > unsignaled fence. >=20 > Cc: stable@vger.kernel.org > Fixes: 0810d5ad88a1 ("accel/rocket: Add job submission IOCTL") > Signed-off-by: ZhaoJinming > --- This is a lot of versions within the same day. You should slow down a littl= e so a human can provide a review, and also document the differences in this sec= tion, after the ---, or using a cover letter. Nicolas > =C2=A0drivers/accel/rocket/rocket_job.c | 19 ++++++++++++++----- > =C2=A01 file changed, 14 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/accel/rocket/rocket_job.c > b/drivers/accel/rocket/rocket_job.c > index ac51bff39833..e8a073e22ac2 100644 > --- a/drivers/accel/rocket/rocket_job.c > +++ b/drivers/accel/rocket/rocket_job.c > @@ -310,13 +310,22 @@ static struct dma_fence *rocket_job_run(struct > drm_sched_job *sched_job) > =C2=A0 dma_fence_put(job->done_fence); > =C2=A0 job->done_fence =3D dma_fence_get(fence); > =C2=A0 > - ret =3D pm_runtime_get_sync(core->dev); > - if (ret < 0) > - return fence; > + ret =3D pm_runtime_resume_and_get(core->dev); > + if (ret < 0) { > + dma_fence_put(job->done_fence); > + job->done_fence =3D NULL; > + dma_fence_put(fence); > + return ERR_PTR(ret); > + } > =C2=A0 > =C2=A0 ret =3D iommu_attach_group(job->domain->domain, core->iommu_group)= ; > - if (ret < 0) > - return fence; > + if (ret < 0) { > + pm_runtime_put(core->dev); > + dma_fence_put(job->done_fence); > + job->done_fence =3D NULL; > + dma_fence_put(fence); > + return ERR_PTR(ret); > + } > =C2=A0 > =C2=A0 scoped_guard(mutex, &core->job_lock) { > =C2=A0 core->in_flight_job =3D job; --=-Xq/WDBnnQBcMXRcBkujo Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQTvDVKBFcTDwhoEbxLZQZRRKWBy9AUCaimk/QAKCRDZQZRRKWBy 9GXRAQCaqFjOga0b8AcWUWyj7n1hBiojgtP5sEJWopdr9ZDLTQD6A7XpFDMgyJa4 NJEu5ngUhgE6hDlNbS+w6OnOyC7oRQI= =G0Lr -----END PGP SIGNATURE----- --=-Xq/WDBnnQBcMXRcBkujo--