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 3DFF3346A1F for ; Wed, 20 May 2026 19:51:59 +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=1779306722; cv=none; b=i+MBw6fVTiS4GXRAgc6FROyfEoE92BOVFHxrs11+RBX4Pu+CHypGtywTnjsR20vNGdL17oHqiQkKNYzxfmHzDFj9PdonFqGk8bK1O2HUjI/Xb1AMojeQmjjif4dmxlvNsl3n4FUyhaoc7+4FSqN/SP5cTRhvjHRkNV1iszhl1TU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779306722; c=relaxed/simple; bh=ZxH6qDDxliBSFL1kA4dNCgc0NySsg1Wg2gDHFLWR590=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=G+xDDP9TN0q93s1YxEW0PW8vIrs0UC3ta1Eg5PpimmrHzuIU4TgbVzIiUGId1qeRC77rfM0NPkhbRARuh2Wn1y1JMeqswSDAYSv0GoVkXKcc84xOdde9r/F27KKNlNP/nUN6TSPwp6xzhjgqjcW89XmRsjijqMC4hOkT/N1gUjY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Wpuh8+ZI; 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="Wpuh8+ZI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 578AA1F000E9; Wed, 20 May 2026 19:51:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779306719; bh=Sr700ZLkhK3DU+BHdplyKh4fOsWZkqc+eF3VoCNCO78=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Wpuh8+ZI35IFIiV9dQ1wKZUnY3OsYHVZg9LYyBd9YOEO2nPBLJ59PV4zIUKzyc88t YMVR75EgJjDMZq8IAoOYJHNiwgYwS++S1bzdI0oa0VP8b0786/0itWMwtojrPs4Iju PmAy1SNPjMDMCEiow3AEiEVs1qzpvD8EptNMmeFQ1+JC+UNmweHmHgx6T8f1VMfzVg Yah7DyFXQb5NpEQ9yeYGtNpcawO4IWURXTqI3KsI70oCZNx/4wz8RYmo+2kI7bcjvs P197tjXiYaS1n8A5VXGj7MbojOYtMTLWalWMycXHQ7DQCniygfNnTuw6kf66IAqn2L T5YsitrzJDDDg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 5/6] phy: realtek: usb2: add support for RTL9607C USB2 PHY Reply-To: sashiko-reviews@lists.linux.dev To: "Rustam Adilov" Cc: linux-phy@lists.infradead.org, vkoul@kernel.org, neil.armstrong@linaro.org, robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, olteanv@gmail.com In-Reply-To: <20260520175728.720877-6-adilov@disroot.org> References: <20260520175728.720877-6-adilov@disroot.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 20 May 2026 19:51:58 +0000 Message-Id: <20260520195159.578AA1F000E9@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] Missing error handling for of_iomap() leads to NULL pointer derefe= rence - [High] Incorrect pointer arithmetic on void __iomem * causes unaligned me= mory accesses - [High] Resource leak of I/O memory mappings -- commit 45e50610a9cf3e4d1ba9824c0450199938805d5b Author: Rustam Adilov phy: realtek: usb2: add support for RTL9607C USB2 PHY This commit adds support for the USB2 PHY of RTL9607C-based SoCs. It includ= es macros, a PHY config structure, and logic to clear a "force host disconnect" bit before writing parameters. > diff --git a/drivers/phy/realtek/phy-rtk-usb2.c b/drivers/phy/realtek/phy= -rtk-usb2.c > index 16c5fc3191dec..69f0f5279b5ef 100644 > --- a/drivers/phy/realtek/phy-rtk-usb2.c > +++ b/drivers/phy/realtek/phy-rtk-usb2.c [ ... ] > @@ -600,6 +617,19 @@ static int do_rtk_phy_init(struct rtk_phy *rtk_phy, = int index) > goto do_toggle; > } > =20 > + if (phy_cfg->force_host_disconnect) { > + /* disable force-host-disconnect */ > + void __iomem *vstatus =3D phy_reg->reg_wrap_vstatus; > + u32 temp; > + > + temp =3D phy_reg->read(vstatus + PHY_9607_FORCE_DISCONNECT_REG); [Severity: High] This isn't a bug introduced by this patch, but missing error handling for of_iomap() in parse_phy_data() could lead to a NULL pointer dereference her= e. drivers/phy/realtek/phy-rtk-usb2.c:parse_phy_data() { ... phy_parameter->phy_reg.reg_wrap_vstatus =3D of_iomap(np, 0); phy_parameter->phy_reg.reg_gusb2phyacc0 =3D of_iomap(np, 1) + index; ... } If the mapping fails, phy_reg->reg_wrap_vstatus will be NULL. Does this new code risk dereferencing a NULL vstatus pointer if the device tree is invalid or memory is exhausted? [Severity: High] This is a pre-existing issue, but does the driver leak the I/O memory mapped by of_iomap()? Since devm_of_iomap() is not used and there are no corresponding iounmap() calls anywhere in the driver, could this exhaust I/O memory upon probe failure or driver unbinding? > + > + temp &=3D ~PHY_9607_FORCE_DISCONNECT_BIT; > + phy_reg->write(temp, vstatus + PHY_9607_FORCE_DISCONNECT_REG); > + > + usleep_range(10000, 11000); > + } > + > /* Set page 0 */ > phy_data_page =3D phy_cfg->page0; > rtk_phy_set_page(phy_reg, 0); [ ... ] > @@ -1374,6 +1404,33 @@ static const struct phy_cfg rtd1315e_phy_cfg =3D { > .write =3D rtk_usb2phy_write, > }; > =20 > +static const struct phy_cfg rtl9607_phy_cfg =3D { > + .page0_size =3D MAX_USB_PHY_PAGE0_DATA_SIZE, > + .page0 =3D { [0] =3D {0xe0, 0x95}, > + [4] =3D {0xe4, 0x6a}, > + [12] =3D {0xf3, 0x31}, }, > + .page1_size =3D MAX_USB_PHY_PAGE1_DATA_SIZE, > + .page1 =3D { [0] =3D {0xe0, 0x26}, }, > + .page2_size =3D MAX_USB_PHY_PAGE2_DATA_SIZE, > + .page2 =3D { [7] =3D {0xe7, 0x33}, }, > + .num_phy =3D 1, [Severity: High] This isn't a bug introduced by this patch, but does the pointer arithmetic incorrectly misalign the base pointer when num_phy > 1? drivers/phy/realtek/phy-rtk-usb2.c:parse_phy_data() { ... for (index =3D 0; index < rtk_phy->num_phy; index++) { ... phy_parameter->phy_reg.reg_gusb2phyacc0 =3D of_iomap(np, 1) + index; ... } Since of_iomap() returns a void __iomem *, adding index increments the pointer by exactly index bytes. Could this cause an unaligned memory access exception (leading to a kernel panic) or fail to map the correct register index from the device tree? > + .check_efuse_version =3D CHECK_EFUSE_V2, > + .efuse_dc_driving_rate =3D EFUS_USB_DC_CAL_RATE, > + .dc_driving_mask =3D 0x1f, [ ... ] --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260520175728.7208= 77-1-adilov@disroot.org?part=3D5 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 3650CCD5BA4 for ; Wed, 20 May 2026 19:52:02 +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=jSNwZ2cLvVDeIh7FoH7AYr+JfcNVBv5OHY/zXXlwW24=; b=3eCYVXiEvyyCAl uKlzku/JX2RupMN4Dyvh4bOaz2tPLgxZ3B2k7gpMNJBTNv2xP2vuI0/OTYyRRxT8zoc86Q9Bj4lm5 NiJdG23x++BwKwbmbF0rMA03d6Bffndzcbe0UfgSrO07sRM1yIPz0wwdMv2BP/Tqzev5JN+5DJnO0 ESaJJz6RIUCw3ct49fCV1ZMJ5vKu+2GToEdrJCubR6B0OciEOzybjv4D4tLCfTqW9zs2beqR3urSk FE7DaOOncmtMEjBqVmpG8wHU6YDxUjs2nJkEULx/MADdmUo+pjBRpJzESi8TAyY16oScLAqf0h5ie BBwjlCU5xMN9KIHIplog==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wPmxV-00000005fNR-2yqC; Wed, 20 May 2026 19:52:01 +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 1wPmxV-00000005fNF-07eQ for linux-phy@lists.infradead.org; Wed, 20 May 2026 19:52:01 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 1BA7B601FC; Wed, 20 May 2026 19:52:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 578AA1F000E9; Wed, 20 May 2026 19:51:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779306719; bh=Sr700ZLkhK3DU+BHdplyKh4fOsWZkqc+eF3VoCNCO78=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Wpuh8+ZI35IFIiV9dQ1wKZUnY3OsYHVZg9LYyBd9YOEO2nPBLJ59PV4zIUKzyc88t YMVR75EgJjDMZq8IAoOYJHNiwgYwS++S1bzdI0oa0VP8b0786/0itWMwtojrPs4Iju PmAy1SNPjMDMCEiow3AEiEVs1qzpvD8EptNMmeFQ1+JC+UNmweHmHgx6T8f1VMfzVg Yah7DyFXQb5NpEQ9yeYGtNpcawO4IWURXTqI3KsI70oCZNx/4wz8RYmo+2kI7bcjvs P197tjXiYaS1n8A5VXGj7MbojOYtMTLWalWMycXHQ7DQCniygfNnTuw6kf66IAqn2L T5YsitrzJDDDg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 5/6] phy: realtek: usb2: add support for RTL9607C USB2 PHY To: "Rustam Adilov" Cc: linux-phy@lists.infradead.org, vkoul@kernel.org, neil.armstrong@linaro.org, robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, olteanv@gmail.com In-Reply-To: <20260520175728.720877-6-adilov@disroot.org> References: <20260520175728.720877-6-adilov@disroot.org> Date: Wed, 20 May 2026 19:51:58 +0000 Message-Id: <20260520195159.578AA1F000E9@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 IFtIaWdoXSBNaXNzaW5nIGVycm9yIGhhbmRsaW5nIGZvciBvZl9pb21hcCgpIGxlYWRzIHRvIE5V TEwgcG9pbnRlciBkZXJlZmVyZW5jZQotIFtIaWdoXSBJbmNvcnJlY3QgcG9pbnRlciBhcml0aG1l dGljIG9uIHZvaWQgX19pb21lbSAqIGNhdXNlcyB1bmFsaWduZWQgbWVtb3J5IGFjY2Vzc2VzCi0g W0hpZ2hdIFJlc291cmNlIGxlYWsgb2YgSS9PIG1lbW9yeSBtYXBwaW5ncwotLQoKY29tbWl0IDQ1 ZTUwNjEwYTljZjNlNGQxYmE5ODI0YzA0NTAxOTk5Mzg4MDVkNWIKQXV0aG9yOiBSdXN0YW0gQWRp bG92IDxhZGlsb3ZAZGlzcm9vdC5vcmc+CgpwaHk6IHJlYWx0ZWs6IHVzYjI6IGFkZCBzdXBwb3J0 IGZvciBSVEw5NjA3QyBVU0IyIFBIWQoKVGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciB0aGUg VVNCMiBQSFkgb2YgUlRMOTYwN0MtYmFzZWQgU29Dcy4gSXQgaW5jbHVkZXMKbWFjcm9zLCBhIFBI WSBjb25maWcgc3RydWN0dXJlLCBhbmQgbG9naWMgdG8gY2xlYXIgYSAiZm9yY2UgaG9zdCBkaXNj b25uZWN0IgpiaXQgYmVmb3JlIHdyaXRpbmcgcGFyYW1ldGVycy4KCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGh5L3JlYWx0ZWsvcGh5LXJ0ay11c2IyLmMgYi9kcml2ZXJzL3BoeS9yZWFsdGVrL3Bo eS1ydGstdXNiMi5jCj4gaW5kZXggMTZjNWZjMzE5MWRlYy4uNjlmMGY1Mjc5YjVlZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL3BoeS9yZWFsdGVrL3BoeS1ydGstdXNiMi5jCj4gKysrIGIvZHJpdmVy cy9waHkvcmVhbHRlay9waHktcnRrLXVzYjIuYwpbIC4uLiBdCj4gQEAgLTYwMCw2ICs2MTcsMTkg QEAgc3RhdGljIGludCBkb19ydGtfcGh5X2luaXQoc3RydWN0IHJ0a19waHkgKnJ0a19waHksIGlu dCBpbmRleCkKPiAgCQlnb3RvIGRvX3RvZ2dsZTsKPiAgCX0KPiAgCj4gKwlpZiAocGh5X2NmZy0+ Zm9yY2VfaG9zdF9kaXNjb25uZWN0KSB7Cj4gKwkJLyogZGlzYWJsZSBmb3JjZS1ob3N0LWRpc2Nv bm5lY3QgKi8KPiArCQl2b2lkIF9faW9tZW0gKnZzdGF0dXMgPSBwaHlfcmVnLT5yZWdfd3JhcF92 c3RhdHVzOwo+ICsJCXUzMiB0ZW1wOwo+ICsKPiArCQl0ZW1wID0gcGh5X3JlZy0+cmVhZCh2c3Rh dHVzICsgUEhZXzk2MDdfRk9SQ0VfRElTQ09OTkVDVF9SRUcpOwoKW1NldmVyaXR5OiBIaWdoXQpU aGlzIGlzbid0IGEgYnVnIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCwgYnV0IG1pc3NpbmcgZXJy b3IgaGFuZGxpbmcgZm9yCm9mX2lvbWFwKCkgaW4gcGFyc2VfcGh5X2RhdGEoKSBjb3VsZCBsZWFk IHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGhlcmUuCgpkcml2ZXJzL3BoeS9yZWFsdGVr L3BoeS1ydGstdXNiMi5jOnBhcnNlX3BoeV9kYXRhKCkgewogICAgLi4uCiAgICBwaHlfcGFyYW1l dGVyLT5waHlfcmVnLnJlZ193cmFwX3ZzdGF0dXMgPSBvZl9pb21hcChucCwgMCk7CiAgICBwaHlf cGFyYW1ldGVyLT5waHlfcmVnLnJlZ19ndXNiMnBoeWFjYzAgPSBvZl9pb21hcChucCwgMSkgKyBp bmRleDsKICAgIC4uLgp9CgpJZiB0aGUgbWFwcGluZyBmYWlscywgcGh5X3JlZy0+cmVnX3dyYXBf dnN0YXR1cyB3aWxsIGJlIE5VTEwuCgpEb2VzIHRoaXMgbmV3IGNvZGUgcmlzayBkZXJlZmVyZW5j aW5nIGEgTlVMTCB2c3RhdHVzIHBvaW50ZXIgaWYgdGhlIGRldmljZQp0cmVlIGlzIGludmFsaWQg b3IgbWVtb3J5IGlzIGV4aGF1c3RlZD8KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1l eGlzdGluZyBpc3N1ZSwgYnV0IGRvZXMgdGhlIGRyaXZlciBsZWFrIHRoZSBJL08gbWVtb3J5IG1h cHBlZApieSBvZl9pb21hcCgpPwoKU2luY2UgZGV2bV9vZl9pb21hcCgpIGlzIG5vdCB1c2VkIGFu ZCB0aGVyZSBhcmUgbm8gY29ycmVzcG9uZGluZyBpb3VubWFwKCkKY2FsbHMgYW55d2hlcmUgaW4g dGhlIGRyaXZlciwgY291bGQgdGhpcyBleGhhdXN0IEkvTyBtZW1vcnkgdXBvbiBwcm9iZQpmYWls dXJlIG9yIGRyaXZlciB1bmJpbmRpbmc/Cgo+ICsKPiArCQl0ZW1wICY9IH5QSFlfOTYwN19GT1JD RV9ESVNDT05ORUNUX0JJVDsKPiArCQlwaHlfcmVnLT53cml0ZSh0ZW1wLCB2c3RhdHVzICsgUEhZ Xzk2MDdfRk9SQ0VfRElTQ09OTkVDVF9SRUcpOwo+ICsKPiArCQl1c2xlZXBfcmFuZ2UoMTAwMDAs IDExMDAwKTsKPiArCX0KPiArCj4gIAkvKiBTZXQgcGFnZSAwICovCj4gIAlwaHlfZGF0YV9wYWdl ID0gcGh5X2NmZy0+cGFnZTA7Cj4gIAlydGtfcGh5X3NldF9wYWdlKHBoeV9yZWcsIDApOwpbIC4u LiBdCj4gQEAgLTEzNzQsNiArMTQwNCwzMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9jZmcg cnRkMTMxNWVfcGh5X2NmZyA9IHsKPiAgCS53cml0ZSA9IHJ0a191c2IycGh5X3dyaXRlLAo+ICB9 Owo+ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfY2ZnIHJ0bDk2MDdfcGh5X2NmZyA9IHsK PiArCS5wYWdlMF9zaXplID0gTUFYX1VTQl9QSFlfUEFHRTBfREFUQV9TSVpFLAo+ICsJLnBhZ2Uw ID0geyBbMF0gPSB7MHhlMCwgMHg5NX0sCj4gKwkJICAgWzRdID0gezB4ZTQsIDB4NmF9LAo+ICsJ CSAgWzEyXSA9IHsweGYzLCAweDMxfSwgfSwKPiArCS5wYWdlMV9zaXplID0gTUFYX1VTQl9QSFlf UEFHRTFfREFUQV9TSVpFLAo+ICsJLnBhZ2UxID0geyBbMF0gPSB7MHhlMCwgMHgyNn0sIH0sCj4g KwkucGFnZTJfc2l6ZSA9IE1BWF9VU0JfUEhZX1BBR0UyX0RBVEFfU0laRSwKPiArCS5wYWdlMiA9 IHsgWzddID0gezB4ZTcsIDB4MzN9LCB9LAo+ICsJLm51bV9waHkgPSAxLAoKW1NldmVyaXR5OiBI aWdoXQpUaGlzIGlzbid0IGEgYnVnIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCwgYnV0IGRvZXMg dGhlIHBvaW50ZXIgYXJpdGhtZXRpYwppbmNvcnJlY3RseSBtaXNhbGlnbiB0aGUgYmFzZSBwb2lu dGVyIHdoZW4gbnVtX3BoeSA+IDE/Cgpkcml2ZXJzL3BoeS9yZWFsdGVrL3BoeS1ydGstdXNiMi5j OnBhcnNlX3BoeV9kYXRhKCkgewogICAgLi4uCiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBy dGtfcGh5LT5udW1fcGh5OyBpbmRleCsrKSB7CiAgICAgICAgLi4uCiAgICAgICAgcGh5X3BhcmFt ZXRlci0+cGh5X3JlZy5yZWdfZ3VzYjJwaHlhY2MwID0gb2ZfaW9tYXAobnAsIDEpICsgaW5kZXg7 CiAgICAuLi4KfQoKU2luY2Ugb2ZfaW9tYXAoKSByZXR1cm5zIGEgdm9pZCBfX2lvbWVtICosIGFk ZGluZyBpbmRleCBpbmNyZW1lbnRzIHRoZQpwb2ludGVyIGJ5IGV4YWN0bHkgaW5kZXggYnl0ZXMu CgpDb3VsZCB0aGlzIGNhdXNlIGFuIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIGV4Y2VwdGlvbiAo bGVhZGluZyB0byBhIGtlcm5lbApwYW5pYykgb3IgZmFpbCB0byBtYXAgdGhlIGNvcnJlY3QgcmVn aXN0ZXIgaW5kZXggZnJvbSB0aGUgZGV2aWNlIHRyZWU/Cgo+ICsJLmNoZWNrX2VmdXNlX3ZlcnNp b24gPSBDSEVDS19FRlVTRV9WMiwKPiArCS5lZnVzZV9kY19kcml2aW5nX3JhdGUgPSBFRlVTX1VT Ql9EQ19DQUxfUkFURSwKPiArCS5kY19kcml2aW5nX21hc2sgPSAweDFmLApbIC4uLiBdCgotLSAK U2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYw NTIwMTc1NzI4LjcyMDg3Ny0xLWFkaWxvdkBkaXNyb290Lm9yZz9wYXJ0PTUKCi0tIApsaW51eC1w aHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=