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 2A8ED3C3F67 for ; Thu, 10 Sep 2026 09:40:37 +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=1789033241; cv=none; b=IS69HhdSSejyAkaubGSt9iJfJzZBtMc3j/3Q+DYOT7S9hx5w1juy7sGN2oKxbxc0+3q2SJaYDNu7+P+9/E5v5PYr11IobSb7paBoS0epvyvbwyBNvBw/BxJEmEqi7nIB9G12N93HZEQ3OXZPAtH4qROvrYeVGlNTlBQulGRnhXM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789033241; c=relaxed/simple; bh=Ztj/TRgtePNFTKSn8FPj3Xks9t6QJdEhmDQUZHSi5Qk=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=Bu8cZfwCzQWj+WDbAZSSe7AlCEiue0/kOwDYMGDJNPpPCSBe5EXA48pZlgPqsTbDcpLEv0/3Aoi1Q5UyCXAL2hK0CmsLZ6+8CuphfGouAb9+vbCLVvZ/pYDpRvVJ5RR5dnq9bIHN7PgaHDbAhZzFSKzK4sDsckzUsRdBy078r68= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SJmbuNz7; 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="SJmbuNz7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D43B1F00893; Thu, 10 Sep 2026 09:40:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789033236; bh=AblW3HlTcp2X4Z5WQJdWAiSLo3aOKERwFEQ7DNGb/ec=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=SJmbuNz7WTDohsb9LlJdSIA4T3Iwlqm5d/cnr7NNoZ/cZ92YpeTDFEmUsJqvCGqfR za57psQLY6k54BwvjVAhXP1WBxPbf+g7l3M/qeMVZF0nOzBBJreA4Ho88OeX1+5muh eg7PDIROLPLmLp6XkzojuhyK6JGe5/tQsM9HOqhOVDyn+JoVrBkc5WQaVTwPJynSN4 CHS2HBKz4T8oSBcSgvDTxX2u9qDuyyTQ3R2NuhhHs35iK61JoGX2ADifXgCahdnyVf NQmBXM0MVMaVvdwyfI3/iTlZIRvb581Lg5t0kWgbTVgPc+Ks4dC33rA9pXS+xCxCAN nyOx1jfVXgbSw== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 04/12] phy: phy-mtk-dp: Migrate register offsets to SoC specific pdata Reply-To: sashiko-reviews@lists.linux.dev To: "AngeloGioacchino Del Regno" Cc: robh@kernel.org, olteanv@gmail.com, conor+dt@kernel.org, devicetree@vger.kernel.org, vkoul@kernel.org, linux-phy@lists.infradead.org, neil.armstrong@linaro.org, dri-devel@lists.freedesktop.org In-Reply-To: <20260910092038.48291-5-angelogioacchino.delregno@collabora.com> References: <20260910092038.48291-1-angelogioacchino.delregno@collabora.com> <20260910092038.48291-5-angelogioacchino.delregno@collabora.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Thu, 10 Sep 2026 09:40:35 +0000 Message-Id: <20260910094036.3D43B1F00893@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: New issues: - [High] Missing NULL check for `device_get_match_data()` leads to a NULL p= ointer dereference on manual sysfs bind. - [High] Overlapping devicetree reg property and hardcoded offset prevents = successful DT probe. Pre-existing issues: - [High] Potential NULL pointer dereference when accessing `dev->platform_d= ata` prior to validation. -- commit 6b41d18c7c7f31b8549b66b4262af72e2486491d Author: AngeloGioacchino Del Regno phy: phy-mtk-dp: Migrate register offsets to SoC specific pdata =20 In preparation for adding support for newer SoCs and for adding more capabilities to this driver in an efficient manner, migrate all of the hardcoded register offsets to SoC specific pdata and assign that for both DT and platform probing. > diff --git a/drivers/phy/mediatek/phy-mtk-dp.c b/drivers/phy/mediatek/phy= -mtk-dp.c > index d241004e28286..20974650d9409 100644 > --- a/drivers/phy/mediatek/phy-mtk-dp.c > +++ b/drivers/phy/mediatek/phy-mtk-dp.c [ ... ] > @@ -170,12 +241,19 @@ static void mtk_dp_phy_legacy_remove_lookup(void *d= ata) > phy_remove_lookup(phy, "dp", dev_name(dp_phy->dev)); > } > =20 > +static const struct mtk_dp_phy_pdata mt8195_dp_phy_data; > + > static int mtk_dp_phy_legacy_probe(struct platform_device *pdev, struct = mtk_dp_phy *dp_phy) > { > struct device *dev =3D &pdev->dev; > struct phy *phy; > int ret; > =20 > + /* > + * If legacy platform driver probe, assume this is MT8195 or compatible > + * with a devicetree that was not migrated to the new, proper bindings. > + */ > + dp_phy->pdata =3D &mt8195_dp_phy_data; > dp_phy->regmap =3D *(struct regmap **)dev->platform_data; > if (!dp_phy->regmap) > return dev_err_probe(dev, -EINVAL, "No platform data available\n"); [Severity: High] This isn't a bug introduced by this patch, but can this dereference dev->platform_data before checking if it is NULL? If the driver is manually bound via sysfs or a module without platform data provided, it looks like it would crash immediately here: drivers/phy/mediatek/phy-mtk-dp.c:mtk_dp_phy_legacy_probe() { ... dp_phy->regmap =3D *(struct regmap **)dev->platform_data; if (!dp_phy->regmap) return dev_err_probe(dev, -EINVAL, "No platform data available\n"); ... } [ ... ] > @@ -235,6 +313,8 @@ static int mtk_dp_phy_probe(struct platform_device *p= dev) > if (ret) > return ret; > =20 > + dp_phy->pdata =3D device_get_match_data(dev); > + > phy =3D devm_phy_create(dev, NULL, &mtk_dp_phy_dev_ops); > if (IS_ERR(phy)) > return dev_err_probe(dev, PTR_ERR(phy), [Severity: High] Could this result in a NULL pointer dereference? If the driver is manually bound (e.g., via driver_override in sysfs) to a device that possesses an of_node but does not match any entry in mtk_dp_phy_of_match, device_get_match_data() will return NULL. This NULL pointer would later be dereferenced when accessing dp_phy->pdata in mtk_dp_phy_init(). [ ... ] > @@ -249,8 +329,15 @@ static int mtk_dp_phy_probe(struct platform_device *= pdev) > return 0; > } > =20 > +static const struct mtk_dp_phy_pdata mt8195_dp_phy_data =3D { > + .off_dig_glb =3D 0x1000, > + .off_dig_lane =3D (const u16[]) { 0x1100, 0x1200, 0x1300, 0x1400 }, > + .regs_dig_glb =3D mt8195_phy_dig_glb_regs, > + .regs_dig_lane =3D mt8195_phy_dig_lane_regs, > +}; > + [Severity: High] Will these hardcoded offsets prevent a successful devicetree probe? The driver maps its devicetree reg resource using devm_platform_ioremap_resource() in mtk_dp_phy_probe(): drivers/phy/mediatek/phy-mtk-dp.c:mtk_dp_phy_probe() { ... base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base)) return PTR_ERR(base); ... } If the DT reg maps the specific PHY region, the driver will still add 0x1000 to the mapped base, accessing unmapped physical memory.=20 If the DT reg maps the entire DP controller region to make the offsets work, devm_platform_ioremap_resource() will fail with -EBUSY because the parent DP driver already holds the request_mem_region lock. --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260910092038.4829= 1-1-angelogioacchino.delregno@collabora.com?part=3D4 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 9B274C79FBF for ; Thu, 10 Sep 2026 09:40:40 +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=i6mhbrdvY+/kf9jmAQA7ET2cG4QAxmJIyM2j6zjWFAQ=; b=OQ+tz4qS2X51DJ YtxGLXodVkBtEyNwyUWKL+sIF6VZR9H+ZehG7ozr203RBzxEVoKSXoLLSOVxInThKyyD0XJ8Z3eWr nF/cDsAPA3futfxJ3MYCU553c2aaFPQ0h+vl8p/G+lzsi5iFLhBr/lw5yEjLVJ8WJFCC25NBCohzx NCZWJqp0xpzOK2vh1b3fd7+Gz64ecSN3EGeiWV2mOCK57ZAptfVJzgrlokKtKthTpQD/PpyJcozNC KTMU3TVIFfKYIoQ7LHksXxzKfWueZC/T9nGE3Zd26y+++JednQu3xhrxIqtETQiv0Q9Zx8twl9ncF q2qsEZZsOCSru66mouaQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x4bGp-0000000Duva-3ROa; Thu, 10 Sep 2026 09:40:39 +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 1x4bGn-0000000Duus-35Za for linux-phy@lists.infradead.org; Thu, 10 Sep 2026 09:40:37 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 080D0600C8; Thu, 10 Sep 2026 09:40:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D43B1F00893; Thu, 10 Sep 2026 09:40:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789033236; bh=AblW3HlTcp2X4Z5WQJdWAiSLo3aOKERwFEQ7DNGb/ec=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=SJmbuNz7WTDohsb9LlJdSIA4T3Iwlqm5d/cnr7NNoZ/cZ92YpeTDFEmUsJqvCGqfR za57psQLY6k54BwvjVAhXP1WBxPbf+g7l3M/qeMVZF0nOzBBJreA4Ho88OeX1+5muh eg7PDIROLPLmLp6XkzojuhyK6JGe5/tQsM9HOqhOVDyn+JoVrBkc5WQaVTwPJynSN4 CHS2HBKz4T8oSBcSgvDTxX2u9qDuyyTQ3R2NuhhHs35iK61JoGX2ADifXgCahdnyVf NQmBXM0MVMaVvdwyfI3/iTlZIRvb581Lg5t0kWgbTVgPc+Ks4dC33rA9pXS+xCxCAN nyOx1jfVXgbSw== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 04/12] phy: phy-mtk-dp: Migrate register offsets to SoC specific pdata To: "AngeloGioacchino Del Regno" Cc: robh@kernel.org, olteanv@gmail.com, conor+dt@kernel.org, devicetree@vger.kernel.org, vkoul@kernel.org, linux-phy@lists.infradead.org, neil.armstrong@linaro.org, dri-devel@lists.freedesktop.org In-Reply-To: <20260910092038.48291-5-angelogioacchino.delregno@collabora.com> References: <20260910092038.48291-1-angelogioacchino.delregno@collabora.com> <20260910092038.48291-5-angelogioacchino.delregno@collabora.com> Date: Thu, 10 Sep 2026 09:40:35 +0000 Message-Id: <20260910094036.3D43B1F00893@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 MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBN aXNzaW5nIE5VTEwgY2hlY2sgZm9yIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgbGVhZHMgdG8g YSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb24gbWFudWFsIHN5c2ZzIGJpbmQuCi0gW0hpZ2hd IE92ZXJsYXBwaW5nIGRldmljZXRyZWUgcmVnIHByb3BlcnR5IGFuZCBoYXJkY29kZWQgb2Zmc2V0 IHByZXZlbnRzIHN1Y2Nlc3NmdWwgRFQgcHJvYmUuCgpQcmUtZXhpc3RpbmcgaXNzdWVzOgotIFtI aWdoXSBQb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gYWNjZXNzaW5nIGBk ZXYtPnBsYXRmb3JtX2RhdGFgIHByaW9yIHRvIHZhbGlkYXRpb24uCi0tCgpjb21taXQgNmI0MWQx OGM3YzdmMzFiODU0OWI2NmI0MjYyYWY3MmUyNDg2NDkxZApBdXRob3I6IEFuZ2Vsb0dpb2FjY2hp bm8gRGVsIFJlZ25vIDxhbmdlbG9naW9hY2NoaW5vLmRlbHJlZ25vQGNvbGxhYm9yYS5jb20+Cgpw aHk6IHBoeS1tdGstZHA6IE1pZ3JhdGUgcmVnaXN0ZXIgb2Zmc2V0cyB0byBTb0Mgc3BlY2lmaWMg cGRhdGEKICAgIApJbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIHN1cHBvcnQgZm9yIG5ld2VyIFNv Q3MgYW5kIGZvciBhZGRpbmcKbW9yZSBjYXBhYmlsaXRpZXMgdG8gdGhpcyBkcml2ZXIgaW4gYW4g ZWZmaWNpZW50IG1hbm5lciwgbWlncmF0ZQphbGwgb2YgdGhlIGhhcmRjb2RlZCByZWdpc3RlciBv ZmZzZXRzIHRvIFNvQyBzcGVjaWZpYyBwZGF0YSBhbmQKYXNzaWduIHRoYXQgZm9yIGJvdGggRFQg YW5kIHBsYXRmb3JtIHByb2JpbmcuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9tZWRpYXRl ay9waHktbXRrLWRwLmMgYi9kcml2ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWRwLmMKPiBpbmRl eCBkMjQxMDA0ZTI4Mjg2Li4yMDk3NDY1MGQ5NDA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGh5 L21lZGlhdGVrL3BoeS1tdGstZHAuYwo+ICsrKyBiL2RyaXZlcnMvcGh5L21lZGlhdGVrL3BoeS1t dGstZHAuYwpbIC4uLiBdCj4gQEAgLTE3MCwxMiArMjQxLDE5IEBAIHN0YXRpYyB2b2lkIG10a19k cF9waHlfbGVnYWN5X3JlbW92ZV9sb29rdXAodm9pZCAqZGF0YSkKPiAgCXBoeV9yZW1vdmVfbG9v a3VwKHBoeSwgImRwIiwgZGV2X25hbWUoZHBfcGh5LT5kZXYpKTsKPiAgfQo+ICAKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfZHBfcGh5X3BkYXRhIG10ODE5NV9kcF9waHlfZGF0YTsKPiArCj4g IHN0YXRpYyBpbnQgbXRrX2RwX3BoeV9sZWdhY3lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiwgc3RydWN0IG10a19kcF9waHkgKmRwX3BoeSkKPiAgewo+ICAJc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAgCXN0cnVjdCBwaHkgKnBoeTsKPiAgCWludCByZXQ7Cj4g IAo+ICsJLyoKPiArCSAqIElmIGxlZ2FjeSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUsIGFzc3VtZSB0 aGlzIGlzIE1UODE5NSBvciBjb21wYXRpYmxlCj4gKwkgKiB3aXRoIGEgZGV2aWNldHJlZSB0aGF0 IHdhcyBub3QgbWlncmF0ZWQgdG8gdGhlIG5ldywgcHJvcGVyIGJpbmRpbmdzLgo+ICsJICovCj4g KwlkcF9waHktPnBkYXRhID0gJm10ODE5NV9kcF9waHlfZGF0YTsKPiAgCWRwX3BoeS0+cmVnbWFw ID0gKihzdHJ1Y3QgcmVnbWFwICoqKWRldi0+cGxhdGZvcm1fZGF0YTsKPiAgCWlmICghZHBfcGh5 LT5yZWdtYXApCj4gIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiTm8gcGxh dGZvcm0gZGF0YSBhdmFpbGFibGVcbiIpOwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzbid0IGEg YnVnIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCwgYnV0IGNhbiB0aGlzIGRlcmVmZXJlbmNlCmRl di0+cGxhdGZvcm1fZGF0YSBiZWZvcmUgY2hlY2tpbmcgaWYgaXQgaXMgTlVMTD8KCklmIHRoZSBk cml2ZXIgaXMgbWFudWFsbHkgYm91bmQgdmlhIHN5c2ZzIG9yIGEgbW9kdWxlIHdpdGhvdXQgcGxh dGZvcm0gZGF0YQpwcm92aWRlZCwgaXQgbG9va3MgbGlrZSBpdCB3b3VsZCBjcmFzaCBpbW1lZGlh dGVseSBoZXJlOgoKZHJpdmVycy9waHkvbWVkaWF0ZWsvcGh5LW10ay1kcC5jOm10a19kcF9waHlf bGVnYWN5X3Byb2JlKCkgewogICAgLi4uCglkcF9waHktPnJlZ21hcCA9ICooc3RydWN0IHJlZ21h cCAqKilkZXYtPnBsYXRmb3JtX2RhdGE7CglpZiAoIWRwX3BoeS0+cmVnbWFwKQoJCXJldHVybiBk ZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCwgIk5vIHBsYXRmb3JtIGRhdGEgYXZhaWxhYmxlXG4i KTsKICAgIC4uLgp9CgpbIC4uLiBdCj4gQEAgLTIzNSw2ICszMTMsOCBAQCBzdGF0aWMgaW50IG10 a19kcF9waHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWlmIChyZXQp Cj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gKwlkcF9waHktPnBkYXRhID0gZGV2aWNlX2dldF9tYXRj aF9kYXRhKGRldik7Cj4gKwo+ICAJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgJm10 a19kcF9waHlfZGV2X29wcyk7Cj4gIAlpZiAoSVNfRVJSKHBoeSkpCj4gIAkJcmV0dXJuIGRldl9l cnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBoeSksCgpbU2V2ZXJpdHk6IEhpZ2hdCkNvdWxkIHRoaXMg cmVzdWx0IGluIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlPwoKSWYgdGhlIGRyaXZlciBpcyBt YW51YWxseSBib3VuZCAoZS5nLiwgdmlhIGRyaXZlcl9vdmVycmlkZSBpbiBzeXNmcykgdG8gYQpk ZXZpY2UgdGhhdCBwb3NzZXNzZXMgYW4gb2Zfbm9kZSBidXQgZG9lcyBub3QgbWF0Y2ggYW55IGVu dHJ5IGluCm10a19kcF9waHlfb2ZfbWF0Y2gsIGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpIHdpbGwg cmV0dXJuIE5VTEwuCgpUaGlzIE5VTEwgcG9pbnRlciB3b3VsZCBsYXRlciBiZSBkZXJlZmVyZW5j ZWQgd2hlbiBhY2Nlc3NpbmcgZHBfcGh5LT5wZGF0YQppbiBtdGtfZHBfcGh5X2luaXQoKS4KClsg Li4uIF0KPiBAQCAtMjQ5LDggKzMyOSwxNSBAQCBzdGF0aWMgaW50IG10a19kcF9waHlfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IG10a19kcF9waHlfcGRhdGEgbXQ4MTk1X2RwX3BoeV9kYXRhID0g ewo+ICsJLm9mZl9kaWdfZ2xiID0gMHgxMDAwLAo+ICsJLm9mZl9kaWdfbGFuZSA9IChjb25zdCB1 MTZbXSkgeyAweDExMDAsIDB4MTIwMCwgMHgxMzAwLCAweDE0MDAgfSwKPiArCS5yZWdzX2RpZ19n bGIgPSBtdDgxOTVfcGh5X2RpZ19nbGJfcmVncywKPiArCS5yZWdzX2RpZ19sYW5lID0gbXQ4MTk1 X3BoeV9kaWdfbGFuZV9yZWdzLAo+ICt9Owo+ICsKCltTZXZlcml0eTogSGlnaF0KV2lsbCB0aGVz ZSBoYXJkY29kZWQgb2Zmc2V0cyBwcmV2ZW50IGEgc3VjY2Vzc2Z1bCBkZXZpY2V0cmVlIHByb2Jl PwoKVGhlIGRyaXZlciBtYXBzIGl0cyBkZXZpY2V0cmVlIHJlZyByZXNvdXJjZSB1c2luZwpkZXZt X3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UoKSBpbiBtdGtfZHBfcGh5X3Byb2JlKCk6Cgpkcml2 ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWRwLmM6bXRrX2RwX3BoeV9wcm9iZSgpIHsKICAgIC4u LgoJYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKCWlmIChJ U19FUlIoYmFzZSkpCgkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7CiAgICAuLi4KfQoKSWYgdGhlIERU IHJlZyBtYXBzIHRoZSBzcGVjaWZpYyBQSFkgcmVnaW9uLCB0aGUgZHJpdmVyIHdpbGwgc3RpbGwg YWRkCjB4MTAwMCB0byB0aGUgbWFwcGVkIGJhc2UsIGFjY2Vzc2luZyB1bm1hcHBlZCBwaHlzaWNh bCBtZW1vcnkuIAoKSWYgdGhlIERUIHJlZyBtYXBzIHRoZSBlbnRpcmUgRFAgY29udHJvbGxlciBy ZWdpb24gdG8gbWFrZSB0aGUgb2Zmc2V0cyB3b3JrLApkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVz b3VyY2UoKSB3aWxsIGZhaWwgd2l0aCAtRUJVU1kgYmVjYXVzZSB0aGUgcGFyZW50IERQCmRyaXZl ciBhbHJlYWR5IGhvbGRzIHRoZSByZXF1ZXN0X21lbV9yZWdpb24gbG9jay4KCi0tIApTYXNoaWtv IEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA5MTAwOTIw MzguNDgyOTEtMS1hbmdlbG9naW9hY2NoaW5vLmRlbHJlZ25vQGNvbGxhYm9yYS5jb20/cGFydD00 CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK