From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 856CF35A398 for ; Tue, 12 May 2026 23:29:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778628593; cv=none; b=f/iTeaNErsn7OAUZGbAZH8t0xthmfBwGeAOWQlEZULLAYunSivL68cd9B8sl7sfCDDMQAXlo9+0Hi97xxIFfCibpoVffT/HAZQtabI1epNycRtBNm25GfdMBX5bxjRhtjrHBwfTg77Hfb6N/TFRSva9zouogpywc3biwveI64LA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778628593; c=relaxed/simple; bh=SAopxXCYHwg9Psv3TEZJVuHOMj1x1CJ9g2BjpkFhkLo=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=kqs/wS1bzIhJN3AV+rXVGG0sJcCB5O1JzOdW4ztmpHKtXmGV7qNwYhLAdGIH/mhtJSddtCVFmW2J9+9/4SHgvtUa1ko544GMSWsD5ftxklauqur74j4/h0BTC4PXduAiMpjdBvdXglAvD2kKGFsd/vTxJw5s3aGCbfXceNogVuU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UFKXW41+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UFKXW41+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4FDEC2BCB0; Tue, 12 May 2026 23:29:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778628593; bh=SAopxXCYHwg9Psv3TEZJVuHOMj1x1CJ9g2BjpkFhkLo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date:From; b=UFKXW41+vCmJA/qJitPZL6/IzMGTqmPd6D3mMvsgIYH0hwZ9uJjgxD08tsikjOOWE zJ5GYJDvthvonawcBUrs+hthCzqDNu2T1LAIgCMOHPFNHgTEAnhK57hoOYXbp0o2lz Y97Lyp0LfG/yQx6MDaPhFh7QCOV3VJ770CxmCzQOwzIwkYZl4CD9bnctb/gPCABjq7 ThWnO344X5PDffwo3wYwM9laY56/dy9sgKq3yAeOxM6q8vL3i9PL6ZVJR7FmbjMMxb nTI/t6jNB/ylfwzTQuZ+dqBYCMu3a0nYeHU6JcBK9HUwvh5ZNbdKCHrq3J9DMjFxRl jgc0Lv0qBLirQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v1 6/6] phy: tegra: Add support for Nvidia Tegra XMM6260 PHY Reply-To: sashiko-reviews@lists.linux.dev To: "Svyatoslav Ryhel" Cc: conor+dt@kernel.org, krzk+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org, vkoul@kernel.org, linux-phy@lists.infradead.org, olteanv@gmail.com In-Reply-To: <20260511135703.62470-7-clamor95@gmail.com> References: <20260511135703.62470-7-clamor95@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 12 May 2026 23:29:52 +0000 Message-Id: <20260512232952.D4FDEC2BCB0@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 5 potential issue(= s) to consider: - [Critical] Incorrect error checking of `of_parse_phandle()` leads to arbi= trary device matching and memory corruption. - [Critical] Type confusion and NULL pointer dereference due to illegal acc= ess of an external device's driver data. - [High] Permanent memory and reference count leak of the USB platform devi= ce. - [Medium] Improper usage of `dev_err_probe()` inside runtime execution pat= hs. - [Medium] Missing Kconfig dependency on `CONFIG_USB_PHY`. -- commit c599fd7b5a962e5696a6eb64dff41cd0427d8dde Author: Svyatoslav Ryhel phy: tegra: Add support for Nvidia Tegra XMM6260 PHY Nvidia Tegra XMM6260 PHY is a hardware configuration used in Tegra SoCs to provide proper interaction between the application processor and the modem, as well as control over one of the SoC's USB lines for the modem. > diff --git a/drivers/phy/tegra/Kconfig b/drivers/phy/tegra/Kconfig > index 342fb736da4b1..41b5ce460f37c 100644 > --- a/drivers/phy/tegra/Kconfig > +++ b/drivers/phy/tegra/Kconfig > @@ -18,3 +18,15 @@ config PHY_TEGRA194_P2U > help > Enable this to support the P2U (PIPE to UPHY) that is part of Tegra 1= 9x > and 234 SOCs. > + > +config PHY_TEGRA_XMM6260 > + tristate "NVIDIA Tegra XMM6260 PHY driver" > + depends on ARCH_TEGRA && USB_NET_XMM6260 && USB_SUPPORT > + select GENERIC_PHY This driver relies on USB PHY APIs like devm_usb_get_phy_by_phandle(), but doesn't seem to depend on USB_PHY. Could this cause silent probe failures if CONFIG_USB_PHY is disabled and the stub functions are used? [ ... ] > diff --git a/drivers/phy/tegra/phy-tegra-xmm6260.c b/drivers/phy/tegra/ph= y-tegra-xmm6260.c > new file mode 100644 > index 0000000000000..7511de1333aaf > --- /dev/null > +++ b/drivers/phy/tegra/phy-tegra-xmm6260.c [ ... ] > +struct tegra_usb_device { > + struct ci_hdrc_platform_data data; > + struct platform_device *dev; > +}; [ ... ] > +static int tegra_xmm6260_phy_power_on(struct phy *phy) > +{ > + struct tegra_xmm6260_phy *mphy =3D phy_get_drvdata(phy); > + struct tegra_usb_device *usb =3D platform_get_drvdata(mphy->usb_dev); Does this rely on the exact memory layout of an external driver's private structure? The tegra_usb_device struct is defined locally here. Also, if the external driver hasn't probed yet, platform_get_drvdata() returns NULL, which could lead to a NULL pointer dereference later when accessing usb->dev. > + int ret; > + > + gpiod_set_value_cansleep(mphy->enable_gpio, 1); > + > + ret =3D usb_phy_init(mphy->usb_phy); > + if (ret) { > + gpiod_set_value_cansleep(mphy->enable_gpio, 0); > + return dev_err_probe(mphy->dev, ret, > + "failed to init USB PHY\n"); > + } Is it safe to call dev_err_probe() outside of a probe function? This is a runtime PHY operation callback, and using dev_err_probe() here might pollute the deferred probe lists if the error code happens to match -EPROBE_DEFER. [ ... ] > +static int tegra_xmm6260_phy_probe(struct platform_device *pdev) > +{ [ ... ] > + usb_node =3D of_parse_phandle(dev->of_node, "nvidia,usb-bus", 0); > + if (IS_ERR(usb_node)) > + return dev_err_probe(dev, PTR_ERR(usb_node), > + "failed to parse modem USB bus\n"); Should this check be if (!usb_node) instead? of_parse_phandle() returns NULL when a property is missing, not an ERR_PTR. If usb_node is NULL, this check is bypassed and of_find_device_by_node(NULL) will be called below, which matches the very first platform device in the system lacking a device tree node. > + > + mphy->usb_dev =3D of_find_device_by_node(usb_node); > + of_node_put(usb_node); > + if (!mphy->usb_dev) > + return dev_err_probe(dev, -ENODEV, > + "failed to get modem USB bus\n"); Does this leak the reference to the platform_device returned by of_find_device_by_node()? It increments the reference count via get_device(), but there doesn't seem to be a corresponding put_device() in the error paths below or in a remove callback. > + > + mphy->usb_phy =3D devm_usb_get_phy_by_phandle(dev, "nvidia,usb-bus", 1); --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260511135703.6247= 0-1-clamor95@gmail.com?part=3D6 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 B9F40CD4F21 for ; Tue, 12 May 2026 23:29: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=4Vn/V/ycPAZ1G1bDuK/RPH2O948GC/7ctOs3zjYPqMM=; b=hWii9l5h9+xSAZ JRth7HQd2ek3PhIvKBRg0TTyxoFFlKF25WzbThpFuhkOffE6tFR0MoW4fMO5A1d7ytDwyhAsUwgTq 2YLmONGpPM2IEcPT+hkcZg09bj/R3N395AWzndntWRNU/Pvrj3b5ed92z/LW+zmedkHLh9s0xqres wORIsey4YIUigISFi8eLBiK55/2ebmBEp9PgiQKcznjhGp5dxulPgruNz5PZIYxwHpZ8jl0EgH1fX eyNL85EPkO0Ggyy0GF+Z4VNqQNy3xjVk6R2UlaphDZBm+gMReEZqr5H7bpLXOPnqAmyqR+R+/AV+K ALbu4/bOXaUc+3w7hvPg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wMwXz-00000000hGw-27NZ; Tue, 12 May 2026 23:29:55 +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 1wMwXy-00000000hG4-0BO0 for linux-phy@lists.infradead.org; Tue, 12 May 2026 23:29:54 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 7E66260121; Tue, 12 May 2026 23:29:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4FDEC2BCB0; Tue, 12 May 2026 23:29:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778628593; bh=SAopxXCYHwg9Psv3TEZJVuHOMj1x1CJ9g2BjpkFhkLo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date:From; b=UFKXW41+vCmJA/qJitPZL6/IzMGTqmPd6D3mMvsgIYH0hwZ9uJjgxD08tsikjOOWE zJ5GYJDvthvonawcBUrs+hthCzqDNu2T1LAIgCMOHPFNHgTEAnhK57hoOYXbp0o2lz Y97Lyp0LfG/yQx6MDaPhFh7QCOV3VJ770CxmCzQOwzIwkYZl4CD9bnctb/gPCABjq7 ThWnO344X5PDffwo3wYwM9laY56/dy9sgKq3yAeOxM6q8vL3i9PL6ZVJR7FmbjMMxb nTI/t6jNB/ylfwzTQuZ+dqBYCMu3a0nYeHU6JcBK9HUwvh5ZNbdKCHrq3J9DMjFxRl jgc0Lv0qBLirQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v1 6/6] phy: tegra: Add support for Nvidia Tegra XMM6260 PHY To: "Svyatoslav Ryhel" Cc: conor+dt@kernel.org, krzk+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org, vkoul@kernel.org, linux-phy@lists.infradead.org, olteanv@gmail.com In-Reply-To: <20260511135703.62470-7-clamor95@gmail.com> References: <20260511135703.62470-7-clamor95@gmail.com> Date: Tue, 12 May 2026 23:29:52 +0000 Message-Id: <20260512232952.D4FDEC2BCB0@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 NSBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0NyaXRpY2FsXSBJbmNvcnJlY3Qg ZXJyb3IgY2hlY2tpbmcgb2YgYG9mX3BhcnNlX3BoYW5kbGUoKWAgbGVhZHMgdG8gYXJiaXRyYXJ5 IGRldmljZSBtYXRjaGluZyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24uCi0gW0NyaXRpY2FsXSBUeXBl IGNvbmZ1c2lvbiBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGR1ZSB0byBpbGxlZ2FsIGFj Y2VzcyBvZiBhbiBleHRlcm5hbCBkZXZpY2UncyBkcml2ZXIgZGF0YS4KLSBbSGlnaF0gUGVybWFu ZW50IG1lbW9yeSBhbmQgcmVmZXJlbmNlIGNvdW50IGxlYWsgb2YgdGhlIFVTQiBwbGF0Zm9ybSBk ZXZpY2UuCi0gW01lZGl1bV0gSW1wcm9wZXIgdXNhZ2Ugb2YgYGRldl9lcnJfcHJvYmUoKWAgaW5z aWRlIHJ1bnRpbWUgZXhlY3V0aW9uIHBhdGhzLgotIFtNZWRpdW1dIE1pc3NpbmcgS2NvbmZpZyBk ZXBlbmRlbmN5IG9uIGBDT05GSUdfVVNCX1BIWWAuCi0tCgpjb21taXQgYzU5OWZkN2I1YTk2MmU1 Njk2YTZlYjY0ZGZmNDFjZDA0MjdkOGRkZQpBdXRob3I6IFN2eWF0b3NsYXYgUnloZWwgPGNsYW1v cjk1QGdtYWlsLmNvbT4KCnBoeTogdGVncmE6IEFkZCBzdXBwb3J0IGZvciBOdmlkaWEgVGVncmEg WE1NNjI2MCBQSFkKCk52aWRpYSBUZWdyYSBYTU02MjYwIFBIWSBpcyBhIGhhcmR3YXJlIGNvbmZp Z3VyYXRpb24gdXNlZCBpbiBUZWdyYSBTb0NzCnRvIHByb3ZpZGUgcHJvcGVyIGludGVyYWN0aW9u IGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIHByb2Nlc3NvciBhbmQgdGhlCm1vZGVtLCBhcyB3ZWxs IGFzIGNvbnRyb2wgb3ZlciBvbmUgb2YgdGhlIFNvQydzIFVTQiBsaW5lcyBmb3IgdGhlIG1vZGVt LgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvdGVncmEvS2NvbmZpZyBiL2RyaXZlcnMvcGh5 L3RlZ3JhL0tjb25maWcKPiBpbmRleCAzNDJmYjczNmRhNGIxLi40MWI1Y2U0NjBmMzdjIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvcGh5L3RlZ3JhL0tjb25maWcKPiArKysgYi9kcml2ZXJzL3BoeS90 ZWdyYS9LY29uZmlnCj4gQEAgLTE4LDMgKzE4LDE1IEBAIGNvbmZpZyBQSFlfVEVHUkExOTRfUDJV Cj4gIAloZWxwCj4gIAkgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIFAyVSAoUElQRSB0byBV UEhZKSB0aGF0IGlzIHBhcnQgb2YgVGVncmEgMTl4Cj4gIAkgIGFuZCAyMzQgU09Dcy4KPiArCj4g K2NvbmZpZyBQSFlfVEVHUkFfWE1NNjI2MAo+ICsJdHJpc3RhdGUgIk5WSURJQSBUZWdyYSBYTU02 MjYwIFBIWSBkcml2ZXIiCj4gKwlkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgJiYgVVNCX05FVF9YTU02 MjYwICYmIFVTQl9TVVBQT1JUCj4gKwlzZWxlY3QgR0VORVJJQ19QSFkKClRoaXMgZHJpdmVyIHJl bGllcyBvbiBVU0IgUEhZIEFQSXMgbGlrZSBkZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoKSwg YnV0CmRvZXNuJ3Qgc2VlbSB0byBkZXBlbmQgb24gVVNCX1BIWS4gQ291bGQgdGhpcyBjYXVzZSBz aWxlbnQgcHJvYmUgZmFpbHVyZXMgaWYKQ09ORklHX1VTQl9QSFkgaXMgZGlzYWJsZWQgYW5kIHRo ZSBzdHViIGZ1bmN0aW9ucyBhcmUgdXNlZD8KClsgLi4uIF0KCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGh5L3RlZ3JhL3BoeS10ZWdyYS14bW02MjYwLmMgYi9kcml2ZXJzL3BoeS90ZWdyYS9waHkt dGVncmEteG1tNjI2MC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw MDAwLi43NTExZGUxMzMzYWFmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvcGh5L3Rl Z3JhL3BoeS10ZWdyYS14bW02MjYwLmMKWyAuLi4gXQo+ICtzdHJ1Y3QgdGVncmFfdXNiX2Rldmlj ZSB7Cj4gKwlzdHJ1Y3QgY2lfaGRyY19wbGF0Zm9ybV9kYXRhIGRhdGE7Cj4gKwlzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpkZXY7Cj4gK307ClsgLi4uIF0KPiArc3RhdGljIGludCB0ZWdyYV94bW02 MjYwX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCj4gK3sKPiArCXN0cnVjdCB0ZWdyYV94 bW02MjYwX3BoeSAqbXBoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJc3RydWN0IHRlZ3Jh X3VzYl9kZXZpY2UgKnVzYiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKG1waHktPnVzYl9kZXYpOwoK RG9lcyB0aGlzIHJlbHkgb24gdGhlIGV4YWN0IG1lbW9yeSBsYXlvdXQgb2YgYW4gZXh0ZXJuYWwg ZHJpdmVyJ3MgcHJpdmF0ZQpzdHJ1Y3R1cmU/IFRoZSB0ZWdyYV91c2JfZGV2aWNlIHN0cnVjdCBp cyBkZWZpbmVkIGxvY2FsbHkgaGVyZS4KCkFsc28sIGlmIHRoZSBleHRlcm5hbCBkcml2ZXIgaGFz bid0IHByb2JlZCB5ZXQsIHBsYXRmb3JtX2dldF9kcnZkYXRhKCkKcmV0dXJucyBOVUxMLCB3aGlj aCBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGxhdGVyIHdoZW4KYWNj ZXNzaW5nIHVzYi0+ZGV2LgoKPiArCWludCByZXQ7Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlX2Nh bnNsZWVwKG1waHktPmVuYWJsZV9ncGlvLCAxKTsKPiArCj4gKwlyZXQgPSB1c2JfcGh5X2luaXQo bXBoeS0+dXNiX3BoeSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNs ZWVwKG1waHktPmVuYWJsZV9ncGlvLCAwKTsKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShtcGh5 LT5kZXYsIHJldCwKPiArCQkJCSAgICAgImZhaWxlZCB0byBpbml0IFVTQiBQSFlcbiIpOwo+ICsJ fQoKSXMgaXQgc2FmZSB0byBjYWxsIGRldl9lcnJfcHJvYmUoKSBvdXRzaWRlIG9mIGEgcHJvYmUg ZnVuY3Rpb24/IFRoaXMgaXMgYQpydW50aW1lIFBIWSBvcGVyYXRpb24gY2FsbGJhY2ssIGFuZCB1 c2luZyBkZXZfZXJyX3Byb2JlKCkgaGVyZSBtaWdodCBwb2xsdXRlCnRoZSBkZWZlcnJlZCBwcm9i ZSBsaXN0cyBpZiB0aGUgZXJyb3IgY29kZSBoYXBwZW5zIHRvIG1hdGNoIC1FUFJPQkVfREVGRVIu CgpbIC4uLiBdCj4gK3N0YXRpYyBpbnQgdGVncmFfeG1tNjI2MF9waHlfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiArewpbIC4uLiBdCj4gKwl1c2Jfbm9kZSA9IG9mX3BhcnNl X3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAibnZpZGlhLHVzYi1idXMiLCAwKTsKPiArCWlmIChJU19F UlIodXNiX25vZGUpKQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUih1c2Jf bm9kZSksCj4gKwkJCQkgICAgICJmYWlsZWQgdG8gcGFyc2UgbW9kZW0gVVNCIGJ1c1xuIik7CgpT aG91bGQgdGhpcyBjaGVjayBiZSBpZiAoIXVzYl9ub2RlKSBpbnN0ZWFkPyBvZl9wYXJzZV9waGFu ZGxlKCkgcmV0dXJucyBOVUxMCndoZW4gYSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBub3QgYW4gRVJS X1BUUi4KCklmIHVzYl9ub2RlIGlzIE5VTEwsIHRoaXMgY2hlY2sgaXMgYnlwYXNzZWQgYW5kIG9m X2ZpbmRfZGV2aWNlX2J5X25vZGUoTlVMTCkKd2lsbCBiZSBjYWxsZWQgYmVsb3csIHdoaWNoIG1h dGNoZXMgdGhlIHZlcnkgZmlyc3QgcGxhdGZvcm0gZGV2aWNlIGluIHRoZQpzeXN0ZW0gbGFja2lu ZyBhIGRldmljZSB0cmVlIG5vZGUuCgo+ICsKPiArCW1waHktPnVzYl9kZXYgPSBvZl9maW5kX2Rl dmljZV9ieV9ub2RlKHVzYl9ub2RlKTsKPiArCW9mX25vZGVfcHV0KHVzYl9ub2RlKTsKPiArCWlm ICghbXBoeS0+dXNiX2RldikKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1FTk9ERVYs Cj4gKwkJCQkgICAgICJmYWlsZWQgdG8gZ2V0IG1vZGVtIFVTQiBidXNcbiIpOwoKRG9lcyB0aGlz IGxlYWsgdGhlIHJlZmVyZW5jZSB0byB0aGUgcGxhdGZvcm1fZGV2aWNlIHJldHVybmVkIGJ5Cm9m X2ZpbmRfZGV2aWNlX2J5X25vZGUoKT8gSXQgaW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50 IHZpYQpnZXRfZGV2aWNlKCksIGJ1dCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBjb3JyZXNw b25kaW5nIHB1dF9kZXZpY2UoKSBpbgp0aGUgZXJyb3IgcGF0aHMgYmVsb3cgb3IgaW4gYSByZW1v dmUgY2FsbGJhY2suCgo+ICsKPiArCW1waHktPnVzYl9waHkgPSBkZXZtX3VzYl9nZXRfcGh5X2J5 X3BoYW5kbGUoZGV2LCAibnZpZGlhLHVzYi1idXMiLCAxKTsKCi0tIApTYXNoaWtvIEFJIHJldmll dyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA1MTExMzU3MDMuNjI0NzAt MS1jbGFtb3I5NUBnbWFpbC5jb20/cGFydD02CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdAps aW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK