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 B66993115AE for ; Wed, 16 Sep 2026 14:50:18 +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=1789570220; cv=none; b=mU3wVoW5bW4BdvfuqWO5KBsQMztYcNajie9pv+ftHBq/esDlJnPauZEeffCvo4s6PgoVh9IVC3y9RFXQ1oUMb0YZkMEmPfokh2bSQ7stD6yY2BHt05juJUGwUTPtrqTgV1hX7JlRAGXouSxEOhuyq+5usm0NNfinb5M3AMUxInk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789570220; c=relaxed/simple; bh=ED118zbPhYXfnhkDpw5jbKjFZ1nQB2UORHwdqxXwJSY=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=FICg2QhGSWtPEDIN72gm6oFlVPbWgIBznVL9h1XA3U6ONU1nWYgn3GBfc01cRRCf1dy1GfSESM3Zc8GEsqJlyiuwwf0tGNmYPEpilXRUshAWCyop2GNADW0l1V1db+X5lgS94grLB+pXWcxpnL9exqI92LV0387aUw5vk0z8XyI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y5iec88W; 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="Y5iec88W" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E901A1F00893; Wed, 16 Sep 2026 14:50:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789570218; bh=Jo9RRN8mVnzQ+ecO+UBH1aOTFwFWiiuhUrh7wFlKOmU=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Y5iec88WfRZLRHfBcIvn5BNE6oo4E9uU6oTiUS6JnYz48v/LGTpg11nOI7xyOBeHv qI+80qYhG82FWIqHjcSxIJBEHdhzhfWsaTTj5ObvYaSTEAk0XA079JpQUkoRo8tCHD 6gZ2+0OrZQlu5c3ySlhdkdAhgc43yqyWwYLfJQlGtv3cUMJhCUKHa8mjjRs7oYF1vJ JV7zBLqYt78ufD+9xfObWTo3QRygVdl3GbAqq7dZYe76Lfs5BwkAgpaDPOJuRFjAaD 9Bki8QRpDnHPd0jhv+dNFvLo8HxXkCJib2e+W31B0pD5csps92IjcZ68ahFFa6fns+ MtjlPGjL5A4og== From: sashiko-bot@kernel.org Subject: Re: [PATCH net-next v6 07/11] net: pcs: xpcs: add Rockchip RK3568 platform glue driver Reply-To: sashiko-reviews@lists.linux.dev To: "Coia Prant" Cc: neil.armstrong@linaro.org, conor+dt@kernel.org, robh@kernel.org, vkoul@kernel.org, wsa+renesas@sang-engineering.com, devicetree@vger.kernel.org, olteanv@gmail.com, linux-phy@lists.infradead.org In-Reply-To: <20260915123802.1561724-8-coiaprant@gmail.com> References: <20260915123802.1561724-1-coiaprant@gmail.com> <20260915123802.1561724-8-coiaprant@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 16 Sep 2026 14:50:17 +0000 Message-Id: <20260916145017.E901A1F00893@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: - [High] net: pcs: UAF in xpcs_rk_create due to lockless drvdata access - [Low] kconfig: unmet PM_GENERIC_DOMAINS dependency via select - [Low] net: pcs: integer underflow in EEE multiplier calculation -- commit 45fa9f088b9d4ae656f2c67e864a462b4d229815 Author: Coia Prant net: pcs: xpcs: add Rockchip RK3568 platform glue driver This commit adds a Rockchip RK3568 platform glue driver for the Synopsys DesignWare XPCS controller. It creates a virtual MDIO bus to translate MDIO operations to APB3 register accesses and derives the EEE multiplier at runt= ime. Link: https://dl.radxa.com/rock3/docs/hw/datasheet/Rockchip%20RK3568%20TRM%= 20Part1%20V1.1-20210301.pdf Link: https://dl.radxa.com/rock3/docs/hw/datasheet/Rockchip%20RK3568%20TRM%= 20Part2%20V1.1-20210301.pdf > diff --git a/drivers/net/pcs/Kconfig b/drivers/net/pcs/Kconfig > --- a/drivers/net/pcs/Kconfig > +++ b/drivers/net/pcs/Kconfig [ ... ] > +config PCS_XPCS_ROCKCHIP > + tristate "Rockchip XPCS controller support" > + default ARCH_ROCKCHIP > + depends on OF && (ARCH_ROCKCHIP || COMPILE_TEST) > + select GENERIC_PHY > + select PM_GENERIC_DOMAINS [Severity: Low] Will selecting PM_GENERIC_DOMAINS without inheriting its PM dependency cause unmet direct dependency warnings? The config PM_GENERIC_DOMAINS has a strict dependency on PM. If PCS_XPCS_ROCKCHIP is enabled on a platform where PM is disabled, won't this force PM_GENERIC_DOMAINS on and trigger Kconfig warnings? > + help > + Support for XPCS controller on Rockchip RK356x SoC. [ ... ] > diff --git a/drivers/net/pcs/pcs-xpcs-rk.c b/drivers/net/pcs/pcs-xpcs-rk.c > --- /dev/null > +++ b/drivers/net/pcs/pcs-xpcs-rk.c [ ... ] > +static int xpcs_rk_init_clk(struct dw_xpcs_rk *pxpcs) > +{ [ ... ] > + /* > + * Compute the multiplier for the EEE clock so that > + * clk_eee_period * (mult_fact + 1) falls within 80..120 ns. > + * > + * On RK3568, clk_xpcs_eee is muxed between gpll200 (200 MHz, 5 ns) > + * and cpll125 (125 MHz, 8 ns), selected by CRU_CLKSEL_CON29 bit 13. > + * The reset value is 0 (200 MHz), but derive the value at runtime to > + * stay correct if the mux is changed by a board. > + * > + * Use a 64-bit intermediate: on 32-bit builds, 100 * 200000000 > + * does not fit in unsigned long. Clamp to the 4-bit > + * DW_VR_MII_EEE_MULT_FACT_100NS field. > + */ > + rate =3D clk_get_rate(pxpcs->eee_clk); > + if (!rate) > + return dev_err_probe(dev, -EINVAL, "Invalid EEE clock rate\n"); > + > + mult =3D DIV_ROUND_CLOSEST_ULL(100ULL * rate, NSEC_PER_SEC) - 1; > + pxpcs->eee_mult_fact =3D min_t(u64, mult, 15); [Severity: Low] Does this calculation underflow if the EEE clock rate is very low? If the board configuration provides a clock rate under 5 MHz, the division yields 0. Subtracting 1 causes an unsigned underflow to UINT64_MAX. Won't the subsequent min_t() clamping logic evaluate UINT64_MAX < 15 as fal= se, incorrectly assigning the maximum multiplier of 15 instead of 0? > + return 0; > +} [ ... ] > +struct dw_xpcs *xpcs_rk_create(struct device *dev, struct device_node *n= p) > +{ [ ... ] > + if (!device_link_add(dev, &pdev->dev, DL_FLAG_AUTOREMOVE_CONSUMER)) { > + put_device(&pdev->dev); > + return ERR_PTR(-ENOMEM); > + } > + > + pxpcs =3D platform_get_drvdata(pdev); > + if (!pxpcs || !pxpcs->bus) { [Severity: High] Can this lockless access to the supplier's drvdata cause a use-after-free? If the supplier driver is concurrently unbound via sysfs, the supplier might have already passed the consumer unbind checks before this device link was established.=20 If the supplier then proceeds to devres cleanup and frees the pxpcs memory, won't dereferencing pxpcs->bus access freed memory? Should the consumer hold device_lock(&pdev->dev) while validating the suppl= ier state and reading its drvdata to prevent this race? > + device_link_remove(dev, &pdev->dev); > + put_device(&pdev->dev); > + return ERR_PTR(-EPROBE_DEFER); > + } > + > + xpcs =3D xpcs_create_mdiodev(pxpcs->bus, (int)port); [ ... ] --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260915123802.1561= 724-1-coiaprant@gmail.com?part=3D7 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 EA30AC982C3 for ; Wed, 16 Sep 2026 14:50:22 +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=uNIGbQAxX7W8vWosVhP1U/ad6YvmF/SuMZnMZSWyjKY=; b=RKcWbZDffZ3uXs 65slDDUs6H9TNaCcvMFyhlJi8D/RN53XXhHqwO0AeHqiW31RjOzyycadDJIhPl/CR4zvTNtmtgGLT MmmGvPLlKkVMwyl3X+PNHW7g1OnJoFJbwX7y0ZMSSkjV0QOEoIU+XznyOXhzE4X7TMkUpZpgvH5D8 9dKse5gHWPez6fUjuahrHa5TI3qR+rbQyBKMFHvVrsa2LnPszu24nBLB/tkmgt4cW8JV4yPnlpKxt 4JWvnQrQsSwBfvp6j0GOAp5719c2h/PpkjISJllCJZbx7mJAZFRmKIOLG+xJbX373OOQcJGvHNxYC z3Vf2RaNgd1zKvF39/hA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6qxq-00000009TJJ-1ozF; Wed, 16 Sep 2026 14:50:22 +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 1x6qxn-00000009TIB-1PDF for linux-phy@lists.infradead.org; Wed, 16 Sep 2026 14:50:19 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id AE6BF6053B; Wed, 16 Sep 2026 14:50:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E901A1F00893; Wed, 16 Sep 2026 14:50:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789570218; bh=Jo9RRN8mVnzQ+ecO+UBH1aOTFwFWiiuhUrh7wFlKOmU=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Y5iec88WfRZLRHfBcIvn5BNE6oo4E9uU6oTiUS6JnYz48v/LGTpg11nOI7xyOBeHv qI+80qYhG82FWIqHjcSxIJBEHdhzhfWsaTTj5ObvYaSTEAk0XA079JpQUkoRo8tCHD 6gZ2+0OrZQlu5c3ySlhdkdAhgc43yqyWwYLfJQlGtv3cUMJhCUKHa8mjjRs7oYF1vJ JV7zBLqYt78ufD+9xfObWTo3QRygVdl3GbAqq7dZYe76Lfs5BwkAgpaDPOJuRFjAaD 9Bki8QRpDnHPd0jhv+dNFvLo8HxXkCJib2e+W31B0pD5csps92IjcZ68ahFFa6fns+ MtjlPGjL5A4og== From: sashiko-bot@kernel.org Subject: Re: [PATCH net-next v6 07/11] net: pcs: xpcs: add Rockchip RK3568 platform glue driver To: "Coia Prant" Cc: neil.armstrong@linaro.org, conor+dt@kernel.org, robh@kernel.org, vkoul@kernel.org, wsa+renesas@sang-engineering.com, devicetree@vger.kernel.org, olteanv@gmail.com, linux-phy@lists.infradead.org In-Reply-To: <20260915123802.1561724-8-coiaprant@gmail.com> References: <20260915123802.1561724-1-coiaprant@gmail.com> <20260915123802.1561724-8-coiaprant@gmail.com> Date: Wed, 16 Sep 2026 14:50:17 +0000 Message-Id: <20260916145017.E901A1F00893@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 MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIG5ldDogcGNzOiBVQUYg aW4geHBjc19ya19jcmVhdGUgZHVlIHRvIGxvY2tsZXNzIGRydmRhdGEgYWNjZXNzCi0gW0xvd10g a2NvbmZpZzogdW5tZXQgUE1fR0VORVJJQ19ET01BSU5TIGRlcGVuZGVuY3kgdmlhIHNlbGVjdAot IFtMb3ddIG5ldDogcGNzOiBpbnRlZ2VyIHVuZGVyZmxvdyBpbiBFRUUgbXVsdGlwbGllciBjYWxj dWxhdGlvbgotLQoKY29tbWl0IDQ1ZmE5ZjA4OGI5ZDRhZTY1NmYyYzY3ZTg2NGE0NjJiNGQyMjk4 MTUKQXV0aG9yOiBDb2lhIFByYW50IDxjb2lhcHJhbnRAZ21haWwuY29tPgpuZXQ6IHBjczogeHBj czogYWRkIFJvY2tjaGlwIFJLMzU2OCBwbGF0Zm9ybSBnbHVlIGRyaXZlcgoKVGhpcyBjb21taXQg YWRkcyBhIFJvY2tjaGlwIFJLMzU2OCBwbGF0Zm9ybSBnbHVlIGRyaXZlciBmb3IgdGhlIFN5bm9w c3lzCkRlc2lnbldhcmUgWFBDUyBjb250cm9sbGVyLiBJdCBjcmVhdGVzIGEgdmlydHVhbCBNRElP IGJ1cyB0byB0cmFuc2xhdGUgTURJTwpvcGVyYXRpb25zIHRvIEFQQjMgcmVnaXN0ZXIgYWNjZXNz ZXMgYW5kIGRlcml2ZXMgdGhlIEVFRSBtdWx0aXBsaWVyIGF0IHJ1bnRpbWUuCgpMaW5rOiBodHRw czovL2RsLnJhZHhhLmNvbS9yb2NrMy9kb2NzL2h3L2RhdGFzaGVldC9Sb2NrY2hpcCUyMFJLMzU2 OCUyMFRSTSUyMFBhcnQxJTIwVjEuMS0yMDIxMDMwMS5wZGYKTGluazogaHR0cHM6Ly9kbC5yYWR4 YS5jb20vcm9jazMvZG9jcy9ody9kYXRhc2hlZXQvUm9ja2NoaXAlMjBSSzM1NjglMjBUUk0lMjBQ YXJ0MiUyMFYxLjEtMjAyMTAzMDEucGRmCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3Mv S2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnCj4gLS0tIGEvZHJpdmVycy9uZXQvcGNz L0tjb25maWcKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwpbIC4uLiBdCj4gK2NvbmZp ZyBQQ1NfWFBDU19ST0NLQ0hJUAo+ICsJdHJpc3RhdGUgIlJvY2tjaGlwIFhQQ1MgY29udHJvbGxl ciBzdXBwb3J0Igo+ICsJZGVmYXVsdCBBUkNIX1JPQ0tDSElQCj4gKwlkZXBlbmRzIG9uIE9GICYm IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVCkKPiArCXNlbGVjdCBHRU5FUklDX1BIWQo+ ICsJc2VsZWN0IFBNX0dFTkVSSUNfRE9NQUlOUwoKW1NldmVyaXR5OiBMb3ddCldpbGwgc2VsZWN0 aW5nIFBNX0dFTkVSSUNfRE9NQUlOUyB3aXRob3V0IGluaGVyaXRpbmcgaXRzIFBNIGRlcGVuZGVu Y3kgY2F1c2UKdW5tZXQgZGlyZWN0IGRlcGVuZGVuY3kgd2FybmluZ3M/CgpUaGUgY29uZmlnIFBN X0dFTkVSSUNfRE9NQUlOUyBoYXMgYSBzdHJpY3QgZGVwZW5kZW5jeSBvbiBQTS4gSWYKUENTX1hQ Q1NfUk9DS0NISVAgaXMgZW5hYmxlZCBvbiBhIHBsYXRmb3JtIHdoZXJlIFBNIGlzIGRpc2FibGVk LCB3b24ndCB0aGlzCmZvcmNlIFBNX0dFTkVSSUNfRE9NQUlOUyBvbiBhbmQgdHJpZ2dlciBLY29u ZmlnIHdhcm5pbmdzPwoKPiArCWhlbHAKPiArCSAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVy IG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuClsgLi4uIF0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYwo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYwpbIC4uLiBd Cj4gK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X2NsayhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3Mp Cj4gK3sKWyAuLi4gXQo+ICsJLyoKPiArCSAqIENvbXB1dGUgdGhlIG11bHRpcGxpZXIgZm9yIHRo ZSBFRUUgY2xvY2sgc28gdGhhdAo+ICsJICogY2xrX2VlZV9wZXJpb2QgKiAobXVsdF9mYWN0ICsg MSkgZmFsbHMgd2l0aGluIDgwLi4xMjAgbnMuCj4gKwkgKgo+ICsJICogT24gUkszNTY4LCBjbGtf eHBjc19lZWUgaXMgbXV4ZWQgYmV0d2VlbiBncGxsMjAwICgyMDAgTUh6LCA1IG5zKQo+ICsJICog YW5kIGNwbGwxMjUgKDEyNSBNSHosIDggbnMpLCBzZWxlY3RlZCBieSBDUlVfQ0xLU0VMX0NPTjI5 IGJpdCAxMy4KPiArCSAqIFRoZSByZXNldCB2YWx1ZSBpcyAwICgyMDAgTUh6KSwgYnV0IGRlcml2 ZSB0aGUgdmFsdWUgYXQgcnVudGltZSB0bwo+ICsJICogc3RheSBjb3JyZWN0IGlmIHRoZSBtdXgg aXMgY2hhbmdlZCBieSBhIGJvYXJkLgo+ICsJICoKPiArCSAqIFVzZSBhIDY0LWJpdCBpbnRlcm1l ZGlhdGU6IG9uIDMyLWJpdCBidWlsZHMsIDEwMCAqIDIwMDAwMDAwMAo+ICsJICogZG9lcyBub3Qg Zml0IGluIHVuc2lnbmVkIGxvbmcuIENsYW1wIHRvIHRoZSA0LWJpdAo+ICsJICogRFdfVlJfTUlJ X0VFRV9NVUxUX0ZBQ1RfMTAwTlMgZmllbGQuCj4gKwkgKi8KPiArCXJhdGUgPSBjbGtfZ2V0X3Jh dGUocHhwY3MtPmVlZV9jbGspOwo+ICsJaWYgKCFyYXRlKQo+ICsJCXJldHVybiBkZXZfZXJyX3By b2JlKGRldiwgLUVJTlZBTCwgIkludmFsaWQgRUVFIGNsb2NrIHJhdGVcbiIpOwo+ICsKPiArCW11 bHQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoMTAwVUxMICogcmF0ZSwgTlNFQ19QRVJfU0VDKSAt IDE7Cj4gKwlweHBjcy0+ZWVlX211bHRfZmFjdCA9IG1pbl90KHU2NCwgbXVsdCwgMTUpOwoKW1Nl dmVyaXR5OiBMb3ddCkRvZXMgdGhpcyBjYWxjdWxhdGlvbiB1bmRlcmZsb3cgaWYgdGhlIEVFRSBj bG9jayByYXRlIGlzIHZlcnkgbG93PwoKSWYgdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gcHJvdmlk ZXMgYSBjbG9jayByYXRlIHVuZGVyIDUgTUh6LCB0aGUgZGl2aXNpb24KeWllbGRzIDAuIFN1YnRy YWN0aW5nIDEgY2F1c2VzIGFuIHVuc2lnbmVkIHVuZGVyZmxvdyB0byBVSU5UNjRfTUFYLgoKV29u J3QgdGhlIHN1YnNlcXVlbnQgbWluX3QoKSBjbGFtcGluZyBsb2dpYyBldmFsdWF0ZSBVSU5UNjRf TUFYIDwgMTUgYXMgZmFsc2UsCmluY29ycmVjdGx5IGFzc2lnbmluZyB0aGUgbWF4aW11bSBtdWx0 aXBsaWVyIG9mIDE1IGluc3RlYWQgb2YgMD8KCj4gKwlyZXR1cm4gMDsKPiArfQpbIC4uLiBdCj4g K3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2Vfbm9kZSAqbnApCj4gK3sKWyAuLi4gXQo+ICsJaWYgKCFkZXZpY2VfbGlua19hZGQo ZGV2LCAmcGRldi0+ZGV2LCBETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpKSB7Cj4gKwkJcHV0 X2RldmljZSgmcGRldi0+ZGV2KTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCX0K PiArCj4gKwlweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsJaWYgKCFweHBj cyB8fCAhcHhwY3MtPmJ1cykgewoKW1NldmVyaXR5OiBIaWdoXQpDYW4gdGhpcyBsb2NrbGVzcyBh Y2Nlc3MgdG8gdGhlIHN1cHBsaWVyJ3MgZHJ2ZGF0YSBjYXVzZSBhIHVzZS1hZnRlci1mcmVlPwoK SWYgdGhlIHN1cHBsaWVyIGRyaXZlciBpcyBjb25jdXJyZW50bHkgdW5ib3VuZCB2aWEgc3lzZnMs IHRoZSBzdXBwbGllciBtaWdodApoYXZlIGFscmVhZHkgcGFzc2VkIHRoZSBjb25zdW1lciB1bmJp bmQgY2hlY2tzIGJlZm9yZSB0aGlzIGRldmljZSBsaW5rIHdhcwplc3RhYmxpc2hlZC4gCgpJZiB0 aGUgc3VwcGxpZXIgdGhlbiBwcm9jZWVkcyB0byBkZXZyZXMgY2xlYW51cCBhbmQgZnJlZXMgdGhl IHB4cGNzIG1lbW9yeSwKd29uJ3QgZGVyZWZlcmVuY2luZyBweHBjcy0+YnVzIGFjY2VzcyBmcmVl ZCBtZW1vcnk/CgpTaG91bGQgdGhlIGNvbnN1bWVyIGhvbGQgZGV2aWNlX2xvY2soJnBkZXYtPmRl dikgd2hpbGUgdmFsaWRhdGluZyB0aGUgc3VwcGxpZXIKc3RhdGUgYW5kIHJlYWRpbmcgaXRzIGRy dmRhdGEgdG8gcHJldmVudCB0aGlzIHJhY2U/Cgo+ICsJCWRldmljZV9saW5rX3JlbW92ZShkZXYs ICZwZGV2LT5kZXYpOwo+ICsJCXB1dF9kZXZpY2UoJnBkZXYtPmRldik7Cj4gKwkJcmV0dXJuIEVS Ul9QVFIoLUVQUk9CRV9ERUZFUik7Cj4gKwl9Cj4gKwo+ICsJeHBjcyA9IHhwY3NfY3JlYXRlX21k aW9kZXYocHhwY3MtPmJ1cywgKGludClwb3J0KTsKWyAuLi4gXQoKLS0gClNhc2hpa28gQUkgcmV2 aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDkxNTEyMzgwMi4xNTYx NzI0LTEtY29pYXByYW50QGdtYWlsLmNvbT9wYXJ0PTcKCi0tIApsaW51eC1waHkgbWFpbGluZyBs aXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=