From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4F7E9CD6E4A for ; Sat, 30 May 2026 09:55:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+UCnctsteA1c4oj3q7mbiO57TDTSHiTR+6jdyWfCkMQ=; b=gbeF3isxFeI3cJ HVELzREvyj5V3vgcI0ns6cxE/KcIC3fDIsql7dbNPWs1oCeo0nt7ZCUaFvzWgCn3OK0IZmjlUcEpz KUTdByTsK9uvG/3vdOZqM3nwVV+2W47jm+K1OfOIF46i9MiLN+aJgNGgn3nSSeVCNrP3ESD8xuRYX CnxTUfB/+YRxYD0rruWPvqpO7mKuzsvdMF1y/BNrughMDefl3874FwJpwBszTkdBj1c4zjFdvwCbG a7tTEQbHTfJzf9zVa4lYWOwTlz4AjebdDIMqFUsizv2scFSUVXFio/isYSgsvnqZfAEdf6aUQl8n5 OwfiGoLRhcveLOXMHUOQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wTGQ0-00000008brp-0tz8; Sat, 30 May 2026 09:55:48 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wTGPz-00000008brS-17SD for linux-amlogic@lists.infradead.org; Sat, 30 May 2026 09:55:47 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 1FE16600BB; Sat, 30 May 2026 09:55:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 997391F00893; Sat, 30 May 2026 09:55:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780134944; bh=b4xdDTyLsm8t8NYoEzMiTZw1nzE0JjKSkKTNbA+wjWY=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Wp39Sw2y+LGz5aCtJckIeQwXo6tXnBcp/HYIFMzUQXqCznN0+fp4+8xhZwMlyJWZc amrgvsWYIJvUYttQMPwrCdumpFHzJ6/u3Ob23bHlfVdrsoKMpXnWkxVfGHne1KAfRs VBI7L573e8WuX4L7lbjnVevI178ja1NwzKWYDFjv4UJ1HfWhZsre1VCBnUFbMNa5Ey pbP7X7SShRaZsfpkIjY8HGpaebbXmTn3qnRy02/0A240326fbClQKpJ1tq6ZAX7751 V9Yug2Bq3fW5qyVclkRN4zXuUydj1jKEDJs1OvKn55IQJE8jZ1sJlKDH1Qfq4/2D4y wgQnoHNltWVPQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 1/8] media: meson: vdec: Fix memory leaks and lifetime of m2m device To: "Anand Moon" Cc: linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org, neil.armstrong@linaro.org In-Reply-To: <20260530094326.11892-2-linux.amoon@gmail.com> References: <20260530094326.11892-2-linux.amoon@gmail.com> Date: Sat, 30 May 2026 09:55:43 +0000 Message-Id: <20260530095544.997391F00893@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIFVzZS1BZnRlci1GcmVl IG9mIGBtMm1fZGV2YCBhbmQgYGNvcmVgIG9uIGRyaXZlciB1bmJpbmQuCi0gW01lZGl1bV0gTG9n aWNhbGx5IGJhY2t3YXJkcyBlcnJvciB1bndpbmRpbmcgaW4gYHZkZWNfb3BlbigpYCBpbnRyb2R1 Y2VzIGRlYWQgY29kZSBhbmQgZmFpbHMgdG8gZml4IGEgcmVzb3VyY2UgbGVhay4KLS0KCmNvbW1p dCAxZTU0MDIwN2Q5MmEzMjQyZTdhYWM3ODk2ODRhMWFkM2MyMDFjNjRlCkF1dGhvcjogQW5hbmQg TW9vbiA8bGludXguYW1vb25AZ21haWwuY29tPgoKbWVkaWE6IG1lc29uOiB2ZGVjOiBGaXggbWVt b3J5IGxlYWtzIGFuZCBsaWZldGltZSBvZiBtMm0gZGV2aWNlCgpUaGlzIGNvbW1pdCBzaGlmdHMg dGhlIHY0bDJfbTJtX2luaXQoKSBjYWxsIHRvIHZkZWNfcHJvYmUoKSBhbmQgcmVsZWFzZXMKaXQg aW4gdmRlY19yZW1vdmUoKSB0byBhZGRyZXNzIGEgZGVzaWduIGZsYXcgd2hlcmUgdGhlIG0ybSBk ZXZpY2Ugd2FzIGJvdW5kCnRvIHRoZSBzZXNzaW9uLiBJdCBhbHNvIGF0dGVtcHRzIHRvIHJlc29s dmUgcmVzb3VyY2UgbGVha3MgaW4gdGhlIGRyaXZlcidzCmVycm9yIGhhbmRsaW5nIHBhdGhzLgoK Q2M6IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXNAbmR1ZnJlc25lLmNhPgpSZXBvcnRlZC1ieTog U2FzaGlrbyA8c2FzaGlrby1ib3RAa2VybmVsLm9yZz4KQ2xvc2VzOiBodHRwczovL2xvcmUua2Vy bmVsLm9yZy9hbGwvMjAyNjA1MjAwNDU5MDUuNkFDQkExRjAwMEU5QHNtdHAua2VybmVsLm9yZy8j dApGaXhlczogM2U3ZjUxYmQ5NjA3ICgibWVkaWE6IG1lc29uOiBhZGQgdjRsMiBtMm0gdmlkZW8g ZGVjb2RlciBkcml2ZXIiKQoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21l c29uL3ZkZWMvdmRlYy5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5j Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5jCj4gKysrIGIv ZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5jClsgLi4uIF0KPiBAQCAtODcz LDIzICs4NzMsMTYgQEAgc3RhdGljIGludCB2ZGVjX29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCj4g IAo+ICAJc2Vzcy0+Y29yZSA9IGNvcmU7Cj4gIAo+IC0Jc2Vzcy0+bTJtX2RldiA9IHY0bDJfbTJt X2luaXQoJnZkZWNfbTJtX29wcyk7Cj4gLQlpZiAoSVNfRVJSKHNlc3MtPm0ybV9kZXYpKSB7Cj4g LQkJZGV2X2VycihkZXYsICJGYWlsIHRvIHY0bDJfbTJtX2luaXRcbiIpOwo+IC0JCXJldCA9IFBU Ul9FUlIoc2Vzcy0+bTJtX2Rldik7Cj4gLQkJZ290byBlcnJfZnJlZV9zZXNzOwo+IC0JfQo+IC0K PiAtCXNlc3MtPm0ybV9jdHggPSB2NGwyX20ybV9jdHhfaW5pdChzZXNzLT5tMm1fZGV2LCBzZXNz LCBtMm1fcXVldWVfaW5pdCk7Cj4gKwlzZXNzLT5tMm1fY3R4ID0gdjRsMl9tMm1fY3R4X2luaXQo Y29yZS0+bTJtX2Rldiwgc2VzcywgbTJtX3F1ZXVlX2luaXQpOwo+ICAJaWYgKElTX0VSUihzZXNz LT5tMm1fY3R4KSkgewo+ICAJCWRldl9lcnIoZGV2LCAiRmFpbCB0byB2NGwyX20ybV9jdHhfaW5p dFxuIik7Cj4gIAkJcmV0ID0gUFRSX0VSUihzZXNzLT5tMm1fY3R4KTsKPiAtCQlnb3RvIGVycl9t Mm1fcmVsZWFzZTsKPiArCQlnb3RvIGVycl9maF9kZWw7CgpbU2V2ZXJpdHk6IE1lZGl1bV0KSXMg dGhpcyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gdGhlIGNvcnJlY3Qgb3JkZXI/IEp1bXBzIHRv IGVycl9maF9kZWwgaGVyZQp3aWxsIGNhbGwgdjRsMl9maF9leGl0KCkgb24gc2Vzcy0+ZmggYmVm b3JlIGl0IGhhcyBiZWVuIGluaXRpYWxpemVkIGZ1cnRoZXIKZG93biBpbiB2ZGVjX29wZW4oKS4K Cj4gIAl9Cj4gIAo+ICAJcmV0ID0gdmRlY19pbml0X2N0cmxzKHNlc3MpOwo+ICAJaWYgKHJldCkK PiAtCQlnb3RvIGVycl9tMm1fcmVsZWFzZTsKPiArCQlnb3RvIGVycl9mcmVlX3Nlc3M7CgpbU2V2 ZXJpdHk6IE1lZGl1bV0KRG9lcyBza2lwcGluZyBlcnJfZmhfZGVsIGhlcmUgbGVhZCB0byBhIG1l bW9yeSBsZWFrPyBJZiB2ZGVjX2luaXRfY3RybHMoKQpmYWlscywganVtcGluZyBkaXJlY3RseSB0 byBlcnJfZnJlZV9zZXNzIGJ5cGFzc2VzIGZyZWVpbmcgdGhlIHN1Y2Nlc3NmdWxseQphbGxvY2F0 ZWQgc2Vzcy0+bTJtX2N0eC4KClsgLi4uIF0KPiBAQCAtOTI1LDkgKzkxOCw5IEBAIHN0YXRpYyBp bnQgdmRlY19jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgCXN0cnVjdCBhbXZkZWNfc2Vzc2lv biAqc2VzcyA9IGZpbGVfdG9fYW12ZGVjX3Nlc3Npb24oZmlsZSk7Cj4gIAo+ICAJdjRsMl9tMm1f Y3R4X3JlbGVhc2Uoc2Vzcy0+bTJtX2N0eCk7CgpbU2V2ZXJpdHk6IEhpZ2hdCkNhbiB0aGlzIHJl c3VsdCBpbiBhIHVzZS1hZnRlci1mcmVlIGlmIHRoZSB1c2VyIGhvbGRzIHRoZSBmaWxlIGRlc2Ny aXB0b3IKb3BlbiBhZnRlciB0aGUgZHJpdmVyIGlzIHVuYm91bmQ/CgpEdXJpbmcgZHJpdmVyIHVu YmluZCwgdmRlY19yZW1vdmUoKSBleHBsaWNpdGx5IGZyZWVzIGNvcmUtPm0ybV9kZXYgYW5kCmRl dnJlcyBjbGVhbnMgdXAgdGhlIGFtdmRlY19jb3JlIHN0cnVjdHVyZS4KCklmIGEgdXNlciBzdWJz ZXF1ZW50bHkgY2xvc2VzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLCB2ZGVjX2Nsb3NlKCkKY2Fs bHMgdjRsMl9tMm1fY3R4X3JlbGVhc2UoKSwgd2hpY2ggd2lsbCBkZXJlZmVyZW5jZSB0aGUgZnJl ZWQgbTJtX2Rldgpwb2ludGVyIGluc2lkZSB2NGwyX20ybV9jYW5jZWxfam9iKCkuCgpBZGRpdGlv bmFsbHksIGFueSBwZW5kaW5nIGpvYnMgbWF5IHRyaWdnZXIgdmRlY19tMm1fam9iX2Fib3J0KCks IHdoaWNoCmRlcmVmZXJlbmNlcyB0aGUgZnJlZWQgc2Vzcy0+Y29yZSBhbmQgc2Vzcy0+Y29yZS0+ bTJtX2Rldi4KCj4gLQl2NGwyX20ybV9yZWxlYXNlKHNlc3MtPm0ybV9kZXYpOwo+ICAJdjRsMl9m aF9kZWwoJnNlc3MtPmZoLCBmaWxlKTsKPiAgCXY0bDJfZmhfZXhpdCgmc2Vzcy0+ZmgpOwo+ICsJ djRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmc2Vzcy0+Y3RybF9oYW5kbGVyKTsKPiAgCj4gIAltdXRl eF9kZXN0cm95KCZzZXNzLT5sb2NrKTsKPiAgCW11dGV4X2Rlc3Ryb3koJnNlc3MtPmJ1ZnNfcmVj eWNsZV9sb2NrKTsKWyAuLi4gXQo+IEBAIC0xMTA0LDYgKzExMDYsNyBAQCBzdGF0aWMgdm9pZCB2 ZGVjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAKPiAgCXZpZGVvX3Vu cmVnaXN0ZXJfZGV2aWNlKGNvcmUtPnZkZXZfZGVjKTsKPiAgCXY0bDJfZGV2aWNlX3VucmVnaXN0 ZXIoJmNvcmUtPnY0bDJfZGV2KTsKPiArCXY0bDJfbTJtX3JlbGVhc2UoY29yZS0+bTJtX2Rldik7 Cj4gIH0KCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0 Y2hzZXQvMjAyNjA1MzAwOTQzMjYuMTE4OTItMS1saW51eC5hbW9vbkBnbWFpbC5jb20/cGFydD0x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h bWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 2B344399011 for ; Sat, 30 May 2026 09:55:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780134946; cv=none; b=ff+XD7g6dVqb7Amyg5MeGyG9Q9TeoDlzWTOX6v2kde+ZJgY+JcMP0p5RpG14OPy8bIOO8cB+ScMIR1bCc80qW2rNPAnsjMX982Z23ETMZD3Ecv808mdgLINc8f8p3Nm8WrGKfirVqiZwNL+nDT5E0B3yCx5qavi3XUYGXbZDXcY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780134946; c=relaxed/simple; bh=YcY1fe51AhUTw+UsyTJ0rgd7OqRycIEmbiMQMTDp0T0=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=ezOYcdjP45POH1NEbxKG7D/kNy8xqibbJPanCRHRmr958FEE0QnuUTszUar/7jdDZLi6hAZVtLEcDmvrD+y0SsyyWmJQQqDClAKWn1usNYYdHnvq0CBPaVI+mLGhLMeovpZtvMaK3O0nkKt2Frb9wNfmpkKMJ6I0QrqyjLpfkjo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Wp39Sw2y; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Wp39Sw2y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 997391F00893; Sat, 30 May 2026 09:55:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780134944; bh=b4xdDTyLsm8t8NYoEzMiTZw1nzE0JjKSkKTNbA+wjWY=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Wp39Sw2y+LGz5aCtJckIeQwXo6tXnBcp/HYIFMzUQXqCznN0+fp4+8xhZwMlyJWZc amrgvsWYIJvUYttQMPwrCdumpFHzJ6/u3Ob23bHlfVdrsoKMpXnWkxVfGHne1KAfRs VBI7L573e8WuX4L7lbjnVevI178ja1NwzKWYDFjv4UJ1HfWhZsre1VCBnUFbMNa5Ey pbP7X7SShRaZsfpkIjY8HGpaebbXmTn3qnRy02/0A240326fbClQKpJ1tq6ZAX7751 V9Yug2Bq3fW5qyVclkRN4zXuUydj1jKEDJs1OvKn55IQJE8jZ1sJlKDH1Qfq4/2D4y wgQnoHNltWVPQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 1/8] media: meson: vdec: Fix memory leaks and lifetime of m2m device Reply-To: sashiko-reviews@lists.linux.dev To: "Anand Moon" Cc: linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org, neil.armstrong@linaro.org In-Reply-To: <20260530094326.11892-2-linux.amoon@gmail.com> References: <20260530094326.11892-2-linux.amoon@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sat, 30 May 2026 09:55:43 +0000 Message-Id: <20260530095544.997391F00893@smtp.kernel.org> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] Use-After-Free of `m2m_dev` and `core` on driver unbind. - [Medium] Logically backwards error unwinding in `vdec_open()` introduces = dead code and fails to fix a resource leak. -- commit 1e540207d92a3242e7aac789684a1ad3c201c64e Author: Anand Moon media: meson: vdec: Fix memory leaks and lifetime of m2m device This commit shifts the v4l2_m2m_init() call to vdec_probe() and releases it in vdec_remove() to address a design flaw where the m2m device was bound to the session. It also attempts to resolve resource leaks in the driver's error handling paths. Cc: Nicolas Dufresne Reported-by: Sashiko Closes: https://lore.kernel.org/all/20260520045905.6ACBA1F000E9@smtp.kernel= .org/#t Fixes: 3e7f51bd9607 ("media: meson: add v4l2 m2m video decoder driver") > diff --git a/drivers/staging/media/meson/vdec/vdec.c b/drivers/staging/me= dia/meson/vdec/vdec.c > --- a/drivers/staging/media/meson/vdec/vdec.c > +++ b/drivers/staging/media/meson/vdec/vdec.c [ ... ] > @@ -873,23 +873,16 @@ static int vdec_open(struct file *file) > =20 > sess->core =3D core; > =20 > - sess->m2m_dev =3D v4l2_m2m_init(&vdec_m2m_ops); > - if (IS_ERR(sess->m2m_dev)) { > - dev_err(dev, "Fail to v4l2_m2m_init\n"); > - ret =3D PTR_ERR(sess->m2m_dev); > - goto err_free_sess; > - } > - > - sess->m2m_ctx =3D v4l2_m2m_ctx_init(sess->m2m_dev, sess, m2m_queue_init= ); > + sess->m2m_ctx =3D v4l2_m2m_ctx_init(core->m2m_dev, sess, m2m_queue_init= ); > if (IS_ERR(sess->m2m_ctx)) { > dev_err(dev, "Fail to v4l2_m2m_ctx_init\n"); > ret =3D PTR_ERR(sess->m2m_ctx); > - goto err_m2m_release; > + goto err_fh_del; [Severity: Medium] Is this error unwinding logic in the correct order? Jumps to err_fh_del here will call v4l2_fh_exit() on sess->fh before it has been initialized further down in vdec_open(). > } > =20 > ret =3D vdec_init_ctrls(sess); > if (ret) > - goto err_m2m_release; > + goto err_free_sess; [Severity: Medium] Does skipping err_fh_del here lead to a memory leak? If vdec_init_ctrls() fails, jumping directly to err_free_sess bypasses freeing the successfully allocated sess->m2m_ctx. [ ... ] > @@ -925,9 +918,9 @@ static int vdec_close(struct file *file) > struct amvdec_session *sess =3D file_to_amvdec_session(file); > =20 > v4l2_m2m_ctx_release(sess->m2m_ctx); [Severity: High] Can this result in a use-after-free if the user holds the file descriptor open after the driver is unbound? During driver unbind, vdec_remove() explicitly frees core->m2m_dev and devres cleans up the amvdec_core structure. If a user subsequently closes an open file descriptor, vdec_close() calls v4l2_m2m_ctx_release(), which will dereference the freed m2m_dev pointer inside v4l2_m2m_cancel_job(). Additionally, any pending jobs may trigger vdec_m2m_job_abort(), which dereferences the freed sess->core and sess->core->m2m_dev. > - v4l2_m2m_release(sess->m2m_dev); > v4l2_fh_del(&sess->fh, file); > v4l2_fh_exit(&sess->fh); > + v4l2_ctrl_handler_free(&sess->ctrl_handler); > =20 > mutex_destroy(&sess->lock); > mutex_destroy(&sess->bufs_recycle_lock); [ ... ] > @@ -1104,6 +1106,7 @@ static void vdec_remove(struct platform_device *pde= v) > =20 > video_unregister_device(core->vdev_dec); > v4l2_device_unregister(&core->v4l2_dev); > + v4l2_m2m_release(core->m2m_dev); > } --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260530094326.1189= 2-1-linux.amoon@gmail.com?part=3D1