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 3767DC624D4 for ; Thu, 3 Sep 2026 07:32:07 +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=JN3eB9O3rkvSvt/m/UV2JXZkenLTPpN+cciUFyyUbe8=; b=1H23T8zDSKXk2n yZElCWkvUO/FkRM4zhTCdYq9q9fUAosrM8yct426HbJXLv/7/NkcmRAPChmpPFt4NCG//VOP5o7Ou /xEk0olrKtlEzw4tLcsoU2zp9l8aAB73ERwrvTD2t9rn1ow6I5F1GGUIdBD7S3875rUGH+nTPGPrL N4fqagdYFKFeFa/5/GCeHkFG8RQIQrxXbC5/q7gesQtjj+adEKnxaf6536YFwWQyLgVgpKxYpknle JHidOKKsuTcCDkNCzPNFsxH8ROSwC0Fltjf/GSTUcebkNjiyFs7JNgUay8J3jiEGYFFVx8CjqwNow 9tXhpdUklBrlYv+ZLZoA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x21va-0000000Ga4C-3ERK; Thu, 03 Sep 2026 07:32:06 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x21va-0000000Ga2b-0cyj for linux-phy@lists.infradead.org; Thu, 03 Sep 2026 07:32:06 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 7367D600D4; Thu, 3 Sep 2026 07:32:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2FF51F000E9; Thu, 3 Sep 2026 07:32:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788420725; bh=unjdYpdNbIjkmO2l1kSqrflzUfV/ZXZX7I9YEQBi3g8=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Fefl/jn48uateB0OyTUFqwvmNgdYAysbhW6JhhkJnKHKfLZtk3+WwTfHBT2vgox8T GeM6jtlrsgLKhB/HvjphqALyEVfXTLXI8GX20BXU3z7sUOstpE5ZY1f4sED9rMR6Lw LzeuqGWl3znkBKrEGYSq48Ppx7BrgOmZA3ExvFEocbtOpQUx8yeoEy4HnEctgIgWkk be4d/2oMc+Q+QrVs7c+QYy9QWco064vGTbOEYttFEAFID9+wuhM5U8xR0x/C6r/JYW XBAeNwIzBUPD1nlLJgIOdSQhHU53iQqTCnvkzONTaiIZRm8uMXuMYsgjb92+AZ3FjE SFXIQvDP+fJfQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH V3 2/4] phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock To: "Wayne Chang" Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, vkoul@kernel.org, robh@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com, linux-phy@lists.infradead.org In-Reply-To: <20260903071937.533646-3-waynec@nvidia.com> References: <20260903071937.533646-1-waynec@nvidia.com> <20260903071937.533646-3-waynec@nvidia.com> Date: Thu, 03 Sep 2026 07:32:04 +0000 Message-Id: <20260903073204.D2FF51F000E9@smtp.kernel.org> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list 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-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtIaWdoXSBEb3VibGUtZnJlZSBvZiB0aGUgYHVzYjJgIHBhZCBzdHJ1Y3R1cmUgd2hlbiBgdGVn cmFfeHVzYl9wYWRfaW5pdCgpYCBmYWlscy4KLSBbSGlnaF0gSW52YWxpZCBgZGV2aWNlX3VucmVn aXN0ZXIoKWAgY2FsbCBvbiBgZGV2aWNlX2FkZCgpYCBmYWlsdXJlIHBhdGguCi0gW0hpZ2hdIE5V TEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgbWVtb3J5IGxlYWsgaW4gYHRlZ3JhX3h1c2JfcG9y dF9pbml0KClgIGVycm9yIHBhdGguCi0tCgpjb21taXQgY2JjOTY1ZGRhYmFhM2U4M2NlYThlNmIy NjhkYmYzNDEyMmRhYTNjZApBdXRob3I6IFNpbmctSGFuIENoZW4gPHNpbmdoYW5jQG52aWRpYS5j b20+CgpwaHk6IHRlZ3JhOiB4dXNiOiBVc2UgZGV2bV9jbGtfZ2V0X29wdGlvbmFsIHRvIGZldGNo IFVTQjIgdHJhY2tpbmcgY2xvY2sKICAgIApUaGUgVVNCMiBQQUQgdHJhY2tpbmcgY2xvY2sgaXMg YW4gb3B0aW9uYWwgY2xvY2sgc28gdXNlCmRldm1fY2xrX2dldF9vcHRpb25hbCgpIHNvIGEgbWlz c2luZyBjbG9jayBpbiBkZXZpY2V0cmVlIGlzCnJlcHJlc2VudGVkIGFzIE5VTEwgYW5kIHByb2Jl IGNhbiBjb250aW51ZS4gY2xrX3ByZXBhcmVfZW5hYmxlKCkKYW5kIGNsa19kaXNhYmxlX3VucHJl cGFyZSgpIGFscmVhZHkgdHJlYXQgYSBOVUxMIGNsb2NrIGFzIGEgbm8tb3AuCgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BoeS90ZWdyYS94dXNiLXRlZ3JhMTg2LmMgYi9kcml2ZXJzL3BoeS90ZWdy YS94dXNiLXRlZ3JhMTg2LmMKPiBpbmRleCA2MDE1NmFlYTI3MDcxLi44MDBiZTBjYmIzZjlmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvcGh5L3RlZ3JhL3h1c2ItdGVncmExODYuYwo+ICsrKyBiL2Ry aXZlcnMvcGh5L3RlZ3JhL3h1c2ItdGVncmExODYuYwo+IEBAIC0xMDQ1LDcgKzEwNDUsNyBAQCB0 ZWdyYTE4Nl91c2IyX3BhZF9wcm9iZShzdHJ1Y3QgdGVncmFfeHVzYl9wYWRjdGwgKnBhZGN0bCwK PiAgCQlnb3RvIG91dDsKPiAgCX0KPiAgCj4gLQlwcml2LT51c2IyX3Rya19jbGsgPSBkZXZtX2Ns a19nZXQoJnBhZC0+ZGV2LCAidHJrIik7Cj4gKwlwcml2LT51c2IyX3Rya19jbGsgPSBkZXZtX2Ns a19nZXRfb3B0aW9uYWwoJnBhZC0+ZGV2LCAidHJrIik7Cj4gIAlpZiAoSVNfRVJSKHByaXYtPnVz YjJfdHJrX2NsaykpIHsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBpbnRyb2R1 Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBpcyB0aGVyZSBhIGRvdWJsZS1mcmVlIG9mIHRoZQp1c2Iy IHBhZCBzdHJ1Y3R1cmUgaWYgdGVncmFfeHVzYl9wYWRfaW5pdCgpIGZhaWxzPwoKTG9va2luZyBh dCB0ZWdyYTE4Nl91c2IyX3BhZF9wcm9iZSgpIGp1c3QgYWJvdmUgdGhpcyBjaGFuZ2U6Cgpkcml2 ZXJzL3BoeS90ZWdyYS94dXNiLXRlZ3JhMTg2LmM6dGVncmExODZfdXNiMl9wYWRfcHJvYmUoKSB7 CgkuLi4KCWVyciA9IHRlZ3JhX3h1c2JfcGFkX2luaXQocGFkLCBwYWRjdGwsIG5wKTsKCWlmIChl cnIgPCAwKSB7CgkJa2ZyZWUodXNiMik7CgkJZ290byBvdXQ7Cgl9CgkuLi4KfQoKSWYgZGV2aWNl X2FkZCgpIGZhaWxzIGluc2lkZSB0ZWdyYV94dXNiX3BhZF9pbml0KCksIGl0IGNhbGxzCmRldmlj ZV91bnJlZ2lzdGVyKCksIGRyb3BwaW5nIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50IHRvIHpl cm8gYW5kCnRyaWdnZXJpbmcgdGhlIHJlbGVhc2UgY2FsbGJhY2ssIHdoaWNoIGV2ZW50dWFsbHkg Y2FsbHMKdGVncmExODZfdXNiMl9wYWRfcmVtb3ZlKCkgYW5kIGZyZWVzIHVzYjIuIERvZXMgdGhl IGV4cGxpY2l0IGtmcmVlKHVzYjIpCmhlcmUgcmVzdWx0IGluIGZyZWVpbmcgdGhlIHNhbWUgcG9p bnRlciB0d2ljZT8KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1 ZSwgYnV0IGRvZXMgdGVncmFfeHVzYl9wYWRfaW5pdCgpIGNhbGwKZGV2aWNlX3VucmVnaXN0ZXIo KSBpbmNvcnJlY3RseSBvbiBpdHMgZmFpbHVyZSBwYXRoPwoKZHJpdmVycy9waHkvdGVncmEveHVz Yi5jOnRlZ3JhX3h1c2JfcGFkX2luaXQoKSB7CgkuLi4KCWVyciA9IGRldmljZV9hZGQoJnBhZC0+ ZGV2KTsKCWlmIChlcnIgPCAwKQoJCWdvdG8gdW5yZWdpc3RlcjsKCglyZXR1cm4gMDsKCnVucmVn aXN0ZXI6CglkZXZpY2VfdW5yZWdpc3RlcigmcGFkLT5kZXYpOwoJcmV0dXJuIGVycjsKfQoKSWYg ZGV2aWNlX2FkZCgpIGZhaWxzLCB0aGUgZGV2aWNlIHdhcyBuZXZlciBhZGRlZCB0byB0aGUgc3lz dGVtLiBEb2VzCmNhbGxpbmcgZGV2aWNlX3VucmVnaXN0ZXIoKSAod2hpY2ggZXhlY3V0ZXMgZGV2 aWNlX2RlbCgpIGJlZm9yZQpwdXRfZGV2aWNlKCkpIGF0dGVtcHQgdG8gdGVhciBkb3duIHN5c2Zz IGVudHJpZXMgdGhhdCB3ZXJlIG5ldmVyIGNyZWF0ZWQsCnBvdGVudGlhbGx5IGxlYWRpbmcgdG8g a2VybmVsIHdhcm5pbmdzIG9yIGNyYXNoZXM/IFNob3VsZCBpdCBjYWxsCnB1dF9kZXZpY2UoKSBp bnN0ZWFkPwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzIGEgcHJlLWV4aXN0aW5nIGlzc3VlLCBi dXQgaXMgdGhlcmUgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlCmVycm9yIHBhdGgg Zm9yIHBvcnQgaW5pdGlhbGl6YXRpb24/Cgpkcml2ZXJzL3BoeS90ZWdyYS94dXNiLmM6dGVncmFf eHVzYl9hZGRfdXNiMl9wb3J0KCkgewoJLi4uCgllcnIgPSB0ZWdyYV94dXNiX3BvcnRfaW5pdCgm dXNiMi0+YmFzZSwgcGFkY3RsLCBucCwgInVzYjIiLCBpbmRleCk7CglpZiAoZXJyIDwgMCkKCQln b3RvIG91dDsKCgl1c2IyLT5iYXNlLm9wcyA9IHBhZGN0bC0+c29jLT5wb3J0cy51c2IyLm9wczsK CS4uLgp9CgpJZiB0ZWdyYV94dXNiX3BvcnRfaW5pdCgpIGZhaWxzIChlLmcuLCBkdWUgdG8gZGV2 aWNlX2FkZCgpIGZhaWxpbmcpLCBpdCByb2xscwpiYWNrIGJ5IGRyb3BwaW5nIHRoZSBkZXZpY2Ug cmVmZXJlbmNlLCB0cmlnZ2VyaW5nIHRoZSBwb3J0IHJlbGVhc2UgY2FsbGJhY2s6Cgpkcml2ZXJz L3BoeS90ZWdyYS94dXNiLmM6dGVncmFfeHVzYl9wb3J0X3JlbGVhc2UoKSB7CglzdHJ1Y3QgdGVn cmFfeHVzYl9wb3J0ICpwb3J0ID0gdG9fdGVncmFfeHVzYl9wb3J0KGRldik7CgoJaWYgKHBvcnQt Pm9wcy0+cmVsZWFzZSkKCQlwb3J0LT5vcHMtPnJlbGVhc2UocG9ydCk7Cn0KClNpbmNlIHBvcnQt Pm9wcyBpcyBvbmx5IGFzc2lnbmVkIGFmdGVyIHRlZ3JhX3h1c2JfcG9ydF9pbml0KCkgcmV0dXJu cwpzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgTlVMTCBkdXJpbmcgdGhlIGZhaWx1cmUgcm9sbGJh Y2suIERvZXMgdGhlCnVuY29uZGl0aW9uYWwgZGVyZWZlcmVuY2Ugb2YgcG9ydC0+b3BzIGluIHRl Z3JhX3h1c2JfcG9ydF9yZWxlYXNlKCkgbGVhZCB0bwphIGtlcm5lbCBwYW5pYz8KCj4gIAkJZXJy ID0gUFRSX0VSUihwcml2LT51c2IyX3Rya19jbGspOwo+ICAJCWRldl9kYmcoJnBhZC0+ZGV2LCAi ZmFpbGVkIHRvIGdldCB1c2IyIHRyayBjbG9jazogJWRcbiIsIGVycik7CgotLSAKU2FzaGlrbyBB SSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwOTAzMDcxOTM3 LjUzMzY0Ni0xLXdheW5lY0BudmlkaWEuY29tP3BhcnQ9MgoKLS0gCmxpbnV4LXBoeSBtYWlsaW5n IGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg== 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 B0BDC3E00AA for ; Thu, 3 Sep 2026 07:32:05 +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=1788420727; cv=none; b=OV6Sz1HzwIsGqbxvwguc6jhcWkKSj63jicRUGdesXpuYCbtL6w5C2e28tekL6C31Y584AJvs+UmiKu6m8c6aS41gCJ/tZbgaqoMoudrnC4hS7f480PS2F9a3W+OJGYeyADuR/t1KDoWu1uyOZVHMRFwHd/31zEt8YxTEsEJQ9Eg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788420727; c=relaxed/simple; bh=LM5FxsXy+2j94sg9iy52ApIkpuMhKMHVt/RY7BurKZU=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=HLjg3zuHRsHZg6jdswtMzN39x8YKrWl08YoKxGQiU4cBfVSIrjYrWqeyVPahRBAlo2LUgcti81dTMMAySbThrjm33GF2HMpXTIIEbEm8ud5fC4K4HAKWvjasrXbLIcMbc2hDGs/yTIvK7F8gx9+8VG7Ulvfcb73Mh6HtL6Hzmcc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Fefl/jn4; 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="Fefl/jn4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2FF51F000E9; Thu, 3 Sep 2026 07:32:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788420725; bh=unjdYpdNbIjkmO2l1kSqrflzUfV/ZXZX7I9YEQBi3g8=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Fefl/jn48uateB0OyTUFqwvmNgdYAysbhW6JhhkJnKHKfLZtk3+WwTfHBT2vgox8T GeM6jtlrsgLKhB/HvjphqALyEVfXTLXI8GX20BXU3z7sUOstpE5ZY1f4sED9rMR6Lw LzeuqGWl3znkBKrEGYSq48Ppx7BrgOmZA3ExvFEocbtOpQUx8yeoEy4HnEctgIgWkk be4d/2oMc+Q+QrVs7c+QYy9QWco064vGTbOEYttFEAFID9+wuhM5U8xR0x/C6r/JYW XBAeNwIzBUPD1nlLJgIOdSQhHU53iQqTCnvkzONTaiIZRm8uMXuMYsgjb92+AZ3FjE SFXIQvDP+fJfQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH V3 2/4] phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock Reply-To: sashiko-reviews@lists.linux.dev To: "Wayne Chang" Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, vkoul@kernel.org, robh@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com, linux-phy@lists.infradead.org In-Reply-To: <20260903071937.533646-3-waynec@nvidia.com> References: <20260903071937.533646-1-waynec@nvidia.com> <20260903071937.533646-3-waynec@nvidia.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Thu, 03 Sep 2026 07:32:04 +0000 Message-Id: <20260903073204.D2FF51F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 3 potential issue(= s) to consider: Pre-existing issues: - [High] Double-free of the `usb2` pad structure when `tegra_xusb_pad_init(= )` fails. - [High] Invalid `device_unregister()` call on `device_add()` failure path. - [High] NULL pointer dereference and memory leak in `tegra_xusb_port_init(= )` error path. -- commit cbc965ddabaa3e83cea8e6b268dbf34122daa3cd Author: Sing-Han Chen phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock =20 The USB2 PAD tracking clock is an optional clock so use devm_clk_get_optional() so a missing clock in devicetree is represented as NULL and probe can continue. clk_prepare_enable() and clk_disable_unprepare() already treat a NULL clock as a no-op. > diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-t= egra186.c > index 60156aea27071..800be0cbb3f9f 100644 > --- a/drivers/phy/tegra/xusb-tegra186.c > +++ b/drivers/phy/tegra/xusb-tegra186.c > @@ -1045,7 +1045,7 @@ tegra186_usb2_pad_probe(struct tegra_xusb_padctl *p= adctl, > goto out; > } > =20 > - priv->usb2_trk_clk =3D devm_clk_get(&pad->dev, "trk"); > + priv->usb2_trk_clk =3D devm_clk_get_optional(&pad->dev, "trk"); > if (IS_ERR(priv->usb2_trk_clk)) { [Severity: High] This isn't a bug introduced by this patch, but is there a double-free of the usb2 pad structure if tegra_xusb_pad_init() fails? Looking at tegra186_usb2_pad_probe() just above this change: drivers/phy/tegra/xusb-tegra186.c:tegra186_usb2_pad_probe() { ... err =3D tegra_xusb_pad_init(pad, padctl, np); if (err < 0) { kfree(usb2); goto out; } ... } If device_add() fails inside tegra_xusb_pad_init(), it calls device_unregister(), dropping the device reference count to zero and triggering the release callback, which eventually calls tegra186_usb2_pad_remove() and frees usb2. Does the explicit kfree(usb2) here result in freeing the same pointer twice? [Severity: High] This is a pre-existing issue, but does tegra_xusb_pad_init() call device_unregister() incorrectly on its failure path? drivers/phy/tegra/xusb.c:tegra_xusb_pad_init() { ... err =3D device_add(&pad->dev); if (err < 0) goto unregister; return 0; unregister: device_unregister(&pad->dev); return err; } If device_add() fails, the device was never added to the system. Does calling device_unregister() (which executes device_del() before put_device()) attempt to tear down sysfs entries that were never created, potentially leading to kernel warnings or crashes? Should it call put_device() instead? [Severity: High] This is a pre-existing issue, but is there a NULL pointer dereference in the error path for port initialization? drivers/phy/tegra/xusb.c:tegra_xusb_add_usb2_port() { ... err =3D tegra_xusb_port_init(&usb2->base, padctl, np, "usb2", index); if (err < 0) goto out; usb2->base.ops =3D padctl->soc->ports.usb2.ops; ... } If tegra_xusb_port_init() fails (e.g., due to device_add() failing), it rol= ls back by dropping the device reference, triggering the port release callback: drivers/phy/tegra/xusb.c:tegra_xusb_port_release() { struct tegra_xusb_port *port =3D to_tegra_xusb_port(dev); if (port->ops->release) port->ops->release(port); } Since port->ops is only assigned after tegra_xusb_port_init() returns successfully, it will be NULL during the failure rollback. Does the unconditional dereference of port->ops in tegra_xusb_port_release() lead to a kernel panic? > err =3D PTR_ERR(priv->usb2_trk_clk); > dev_dbg(&pad->dev, "failed to get usb2 trk clock: %d\n", err); --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260903071937.5336= 46-1-waynec@nvidia.com?part=3D2