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 5DDB530DD11; Mon, 20 Jul 2026 15:29:00 +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=1784561342; cv=none; b=S2cn+SrPyjpuH95xE1J/EWc9wzAM0Inh6EB011HsbIQfSTK/Pj9kBlxtI0ZATadHOTgH/KHlwFjxA6yWNi9ZU8MM8IQnp4s1BvcgDYQyOA8KmKN/KhqyEYmrudZABgRC18eCW7aCrcVAiP+XBOe47lOcG/uREJcg7KqQ+sLMd1E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784561342; c=relaxed/simple; bh=bS59bsexk7Y1qcyfUhrTvgTV4NITiDxL0etcJ7UUTj8=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=QtYK4d0Yi8pinZsvnSIx00WbS3KvuzVRXKduI8s31TVmQ62WOg2eRc/x6XpJoCdg5fxP1Vijyzg7VAHXoERXr0Gqd6x8wiXT2v8sr/7e/wimWFtOD8EIDvQIAvF8JCCRLYBRQerP4ufVLloJ4vM0tplTzawGCJ1xxVVCSQbbxHM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CxhpIzmx; 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="CxhpIzmx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B149B1F000E9; Mon, 20 Jul 2026 15:28:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784561339; bh=k4tfXZpVPdc5h7uRxAV7A3+7LziVLeKXHPXqV3dcWDo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=CxhpIzmxHWNPVzq0yogacdMFXSQH+EfpAfV0yeIuofIORk94cDmfgImC0MTUlN3mN jaTE7MXxCbOC2jUV+Qxw0eFZhBLtAMRRkD5h+V76PeZdrp5x23LVZysyMseASGlWU8 6cQOqx5oBT6zJapgP9HNUCFKjc09YJjPACid1JlrpPLcTKyQDdJJbaxq6r7hfkEpM7 GGcDT69tPYPZo8B81Cx1S19vAeDIS0jEOwXLDLqeurDQ9D8hapMTgaZ0oUcLkmlne5 WkgzrYNHLxXMiHBejCvfxrqiYoKGVau1vN+FBJomWzDgKgpS3CpxbcAQbuxWvytS/J vLT8hy2/OiV0w== From: sashiko-bot@kernel.org Subject: Re: [PATCH v3 02/16] PCI: dwc: Use cached PCIe capability offset in core Reply-To: sashiko-reviews@lists.linux.dev To: "Hans Zhang" <18255117159@163.com> Cc: linux-amlogic@lists.infradead.org, imx@lists.linux.dev, linux-pci@vger.kernel.org, neil.armstrong@linaro.org, Frank.Li@kernel.org In-Reply-To: <20260720150619.24733-3-18255117159@163.com> References: <20260720150619.24733-1-18255117159@163.com> <20260720150619.24733-3-18255117159@163.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Mon, 20 Jul 2026 15:28:59 +0000 Message-Id: <20260720152859.B149B1F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] Uninitialized `pci->pcie_cap` used in Endpoint mode causes severe = PCIe configuration space corruption. - [Low] Unnecessary PCIe capability search and unused variable left intact. -- --- Patch [2]: [PATCH v3 02/16] PCI: dwc: Use cached PCIe capability offset= in core --- commit 1e2ce6ece477d5f9c179f2ac4c13cd06cf764f59 Author: Hans Zhang <18255117159@163.com> PCI: dwc: Use cached PCIe capability offset in core =20 Modify the DWC core functions to use the cached pcie_cap offset instead of calling dw_pcie_find_capability() each time. [ ... ] > dw_pcie_ep_init_non_sticky_registers() now assumes pci->pcie_cap is > valid. if not, it prints a warning and skips the operation. The other > functions run after probe, so pci->pcie_cap is already valid and can > be used directly. [Severity: High] The commit message mentions adding a warning and skipping the operation if pci->pcie_cap is not valid, but this check appears to be missing in the code below. > diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pc= i/controller/dwc/pcie-designware-ep.c > index 7d2794945704e..14228be8bbce7 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-ep.c > +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c > @@ -1246,7 +1246,7 @@ static void dw_pcie_ep_init_non_sticky_registers(st= ruct dw_pcie *pci) > * to all other functions as well. > */ > if (funcs > 1) { > - offset =3D dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); > + offset =3D pci->pcie_cap; [Severity: High] Without the validation check mentioned in the commit message, if pci->pcie_cap is uninitialized (0), will this lead to corrupting the standard PCI configuration space header registers instead of the intended capability registers? [ ... ] > diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/c= ontroller/dwc/pcie-designware.c > index ec4722ed93032..810729b918928 100644 > --- a/drivers/pci/controller/dwc/pcie-designware.c > +++ b/drivers/pci/controller/dwc/pcie-designware.c > @@ -806,8 +806,7 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci) > =20 > pci_host_common_link_train_delay(pci->max_link_speed); > =20 > - offset =3D dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); > - val =3D dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); > + val =3D dw_pcie_readw_dbi(pci, pci->pcie_cap + PCI_EXP_LNKSTA); [Severity: High] If pci->pcie_cap is 0, this will read from 0 + PCI_EXP_LNKSTA (0x12) instead of the actual capability offset. Could this lead to failed link status checks? [ ... ] > @@ -890,7 +889,7 @@ static void dw_pcie_link_set_max_speed(struct dw_pcie= *pci) > int dw_pcie_link_get_max_link_width(struct dw_pcie *pci) > { > u8 cap =3D dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); > - u32 lnkcap =3D dw_pcie_readl_dbi(pci, cap + PCI_EXP_LNKCAP); > + u32 lnkcap =3D dw_pcie_readl_dbi(pci, pci->pcie_cap + PCI_EXP_LNKCAP); [Severity: Low] Is the cap variable still needed here? It looks like it is now unused, which might cause an unnecessary MMIO read during the capability search and trigg= er a compiler warning. > return FIELD_GET(PCI_EXP_LNKCAP_MLW, lnkcap); > } > @@ -898,7 +897,6 @@ int dw_pcie_link_get_max_link_width(struct dw_pcie *p= ci) > static void dw_pcie_link_set_max_link_width(struct dw_pcie *pci, u32 num= _lanes) > { > u32 lnkcap, lwsc, plc; > - u8 cap; > =20 > if (!num_lanes) > return; > @@ -935,10 +933,9 @@ static void dw_pcie_link_set_max_link_width(struct d= w_pcie *pci, u32 num_lanes) > dw_pcie_writel_dbi(pci, PCIE_PORT_LINK_CONTROL, plc); > dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, lwsc); > =20 > - cap =3D dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); > - lnkcap =3D dw_pcie_readl_dbi(pci, cap + PCI_EXP_LNKCAP); > + lnkcap =3D dw_pcie_readl_dbi(pci, pci->pcie_cap + PCI_EXP_LNKCAP); > FIELD_MODIFY(PCI_EXP_LNKCAP_MLW, &lnkcap, num_lanes); > - dw_pcie_writel_dbi(pci, cap + PCI_EXP_LNKCAP, lnkcap); > + dw_pcie_writel_dbi(pci, pci->pcie_cap + PCI_EXP_LNKCAP, lnkcap); > } [Severity: High] If pci->pcie_cap happens to be 0 here, this will perform a read-modify-write at offset 0 + PCI_EXP_LNKCAP (0x0C). Could this destroy the standard PCI Header Type and BIST registers? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260720150619.2473= 3-1-18255117159@163.com?part=3D2 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 7947BC44520 for ; Mon, 20 Jul 2026 15:29: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=EHtXgQJn5q25fBWv6Exri1gEZUUUX67BLDtQF+PaBno=; b=Bvhq9Z7RjLrtMi WPBE5er1eAZojhXMVd5HhaEF1hw2QcxDXT09Ss1tEig35MPLtxzpU5R9IM4Snm9yHSePvW21g5Fuy dkWpKDo3x/cpHH5l2sMR+RB62mDnn/jPZYu4N17juSVXiWEufxF6Jpzp/imD1KPd6wxL0BX3DXsAK G2TVJZjsWwSf08UDlm7pwgKa1UTzc8DTtW1MsKmb7EugauniR5N97ddZaJIzd8Q3P7HQJaqKUktzv 08Zaly3Hfp57iYbMx3iVQ3Yz3+TbctCCb0YJ1+bR3/lFqpC4ol0AseNEWhmqu01GNf+CYAR4fGz16 zgSjyIxu+b+oLLUpvIJQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wlpvS-00000007C7x-0mXE; Mon, 20 Jul 2026 15:29:02 +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 1wlpvQ-00000007C7Q-3LWW for linux-amlogic@lists.infradead.org; Mon, 20 Jul 2026 15:29:00 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 3D47360A60; Mon, 20 Jul 2026 15:29:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B149B1F000E9; Mon, 20 Jul 2026 15:28:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784561339; bh=k4tfXZpVPdc5h7uRxAV7A3+7LziVLeKXHPXqV3dcWDo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=CxhpIzmxHWNPVzq0yogacdMFXSQH+EfpAfV0yeIuofIORk94cDmfgImC0MTUlN3mN jaTE7MXxCbOC2jUV+Qxw0eFZhBLtAMRRkD5h+V76PeZdrp5x23LVZysyMseASGlWU8 6cQOqx5oBT6zJapgP9HNUCFKjc09YJjPACid1JlrpPLcTKyQDdJJbaxq6r7hfkEpM7 GGcDT69tPYPZo8B81Cx1S19vAeDIS0jEOwXLDLqeurDQ9D8hapMTgaZ0oUcLkmlne5 WkgzrYNHLxXMiHBejCvfxrqiYoKGVau1vN+FBJomWzDgKgpS3CpxbcAQbuxWvytS/J vLT8hy2/OiV0w== From: sashiko-bot@kernel.org Subject: Re: [PATCH v3 02/16] PCI: dwc: Use cached PCIe capability offset in core To: "Hans Zhang" <18255117159@163.com> Cc: linux-amlogic@lists.infradead.org, imx@lists.linux.dev, linux-pci@vger.kernel.org, neil.armstrong@linaro.org, Frank.Li@kernel.org In-Reply-To: <20260720150619.24733-3-18255117159@163.com> References: <20260720150619.24733-1-18255117159@163.com> <20260720150619.24733-3-18255117159@163.com> Date: Mon, 20 Jul 2026 15:28:59 +0000 Message-Id: <20260720152859.B149B1F000E9@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: 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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIFVuaW5pdGlhbGl6ZWQg YHBjaS0+cGNpZV9jYXBgIHVzZWQgaW4gRW5kcG9pbnQgbW9kZSBjYXVzZXMgc2V2ZXJlIFBDSWUg Y29uZmlndXJhdGlvbiBzcGFjZSBjb3JydXB0aW9uLgotIFtMb3ddIFVubmVjZXNzYXJ5IFBDSWUg Y2FwYWJpbGl0eSBzZWFyY2ggYW5kIHVudXNlZCB2YXJpYWJsZSBsZWZ0IGludGFjdC4KLS0KCi0t LSBQYXRjaCBbMl06IFtQQVRDSCB2MyAwMi8xNl0gUENJOiBkd2M6IFVzZSBjYWNoZWQgUENJZSBj YXBhYmlsaXR5IG9mZnNldCBpbiBjb3JlIC0tLQpjb21taXQgMWUyY2U2ZWNlNDc3ZDVmOWMxNzlm MmFjNGMxM2NkMDZjZjc2NGY1OQpBdXRob3I6IEhhbnMgWmhhbmcgPDE4MjU1MTE3MTU5QDE2My5j b20+CgpQQ0k6IGR3YzogVXNlIGNhY2hlZCBQQ0llIGNhcGFiaWxpdHkgb2Zmc2V0IGluIGNvcmUK ICAgIApNb2RpZnkgdGhlIERXQyBjb3JlIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGNhY2hlZCBwY2ll X2NhcCBvZmZzZXQgaW5zdGVhZApvZiBjYWxsaW5nIGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KCkg ZWFjaCB0aW1lLgoKWyAuLi4gXQoKPiBkd19wY2llX2VwX2luaXRfbm9uX3N0aWNreV9yZWdpc3Rl cnMoKSBub3cgYXNzdW1lcyBwY2ktPnBjaWVfY2FwIGlzCj4gdmFsaWQuIGlmIG5vdCwgaXQgcHJp bnRzIGEgd2FybmluZyBhbmQgc2tpcHMgdGhlIG9wZXJhdGlvbi4gVGhlIG90aGVyCj4gZnVuY3Rp b25zIHJ1biBhZnRlciBwcm9iZSwgc28gcGNpLT5wY2llX2NhcCBpcyBhbHJlYWR5IHZhbGlkIGFu ZCBjYW4KPiBiZSB1c2VkIGRpcmVjdGx5LgoKW1NldmVyaXR5OiBIaWdoXQpUaGUgY29tbWl0IG1l c3NhZ2UgbWVudGlvbnMgYWRkaW5nIGEgd2FybmluZyBhbmQgc2tpcHBpbmcgdGhlIG9wZXJhdGlv biBpZgpwY2ktPnBjaWVfY2FwIGlzIG5vdCB2YWxpZCwgYnV0IHRoaXMgY2hlY2sgYXBwZWFycyB0 byBiZSBtaXNzaW5nIGluIHRoZQpjb2RlIGJlbG93LgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMgYi9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYwo+IGluZGV4IDdkMjc5NDk0NTcwNGUuLjE0 MjI4YmU4YmJjZTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNp ZS1kZXNpZ253YXJlLWVwLmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ll LWRlc2lnbndhcmUtZXAuYwo+IEBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBzdGF0aWMgdm9pZCBkd19w Y2llX2VwX2luaXRfbm9uX3N0aWNreV9yZWdpc3RlcnMoc3RydWN0IGR3X3BjaWUgKnBjaSkKPiAg CSAqIHRvIGFsbCBvdGhlciBmdW5jdGlvbnMgYXMgd2VsbC4KPiAgCSAqLwo+ICAJaWYgKGZ1bmNz ID4gMSkgewo+IC0JCW9mZnNldCA9IGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwgUENJX0NB UF9JRF9FWFApOwo+ICsJCW9mZnNldCA9IHBjaS0+cGNpZV9jYXA7CgpbU2V2ZXJpdHk6IEhpZ2hd CldpdGhvdXQgdGhlIHZhbGlkYXRpb24gY2hlY2sgbWVudGlvbmVkIGluIHRoZSBjb21taXQgbWVz c2FnZSwgaWYKcGNpLT5wY2llX2NhcCBpcyB1bmluaXRpYWxpemVkICgwKSwgd2lsbCB0aGlzIGxl YWQgdG8gY29ycnVwdGluZyB0aGUKc3RhbmRhcmQgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgaGVh ZGVyIHJlZ2lzdGVycyBpbnN0ZWFkIG9mIHRoZSBpbnRlbmRlZApjYXBhYmlsaXR5IHJlZ2lzdGVy cz8KClsgLi4uIF0KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aWUtZGVzaWdud2FyZS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253 YXJlLmMKPiBpbmRleCBlYzQ3MjJlZDkzMDMyLi44MTA3MjliOTE4OTI4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5jCj4gKysrIGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMKPiBAQCAtODA2LDggKzgw Niw3IEBAIGludCBkd19wY2llX3dhaXRfZm9yX2xpbmsoc3RydWN0IGR3X3BjaWUgKnBjaSkKPiAg Cj4gIAlwY2lfaG9zdF9jb21tb25fbGlua190cmFpbl9kZWxheShwY2ktPm1heF9saW5rX3NwZWVk KTsKPiAgCj4gLQlvZmZzZXQgPSBkd19wY2llX2ZpbmRfY2FwYWJpbGl0eShwY2ksIFBDSV9DQVBf SURfRVhQKTsKPiAtCXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwgb2Zmc2V0ICsgUENJX0VY UF9MTktTVEEpOwo+ICsJdmFsID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCBwY2ktPnBjaWVfY2Fw ICsgUENJX0VYUF9MTktTVEEpOwoKW1NldmVyaXR5OiBIaWdoXQpJZiBwY2ktPnBjaWVfY2FwIGlz IDAsIHRoaXMgd2lsbCByZWFkIGZyb20gMCArIFBDSV9FWFBfTE5LU1RBICgweDEyKSBpbnN0ZWFk Cm9mIHRoZSBhY3R1YWwgY2FwYWJpbGl0eSBvZmZzZXQuIENvdWxkIHRoaXMgbGVhZCB0byBmYWls ZWQgbGluayBzdGF0dXMKY2hlY2tzPwoKWyAuLi4gXQoKPiBAQCAtODkwLDcgKzg4OSw3IEBAIHN0 YXRpYyB2b2lkIGR3X3BjaWVfbGlua19zZXRfbWF4X3NwZWVkKHN0cnVjdCBkd19wY2llICpwY2kp Cj4gIGludCBkd19wY2llX2xpbmtfZ2V0X21heF9saW5rX3dpZHRoKHN0cnVjdCBkd19wY2llICpw Y2kpCj4gIHsKPiAgCXU4IGNhcCA9IGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwgUENJX0NB UF9JRF9FWFApOwo+IC0JdTMyIGxua2NhcCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgY2FwICsg UENJX0VYUF9MTktDQVApOwo+ICsJdTMyIGxua2NhcCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwg cGNpLT5wY2llX2NhcCArIFBDSV9FWFBfTE5LQ0FQKTsKCltTZXZlcml0eTogTG93XQpJcyB0aGUg Y2FwIHZhcmlhYmxlIHN0aWxsIG5lZWRlZCBoZXJlPyBJdCBsb29rcyBsaWtlIGl0IGlzIG5vdyB1 bnVzZWQsIHdoaWNoCm1pZ2h0IGNhdXNlIGFuIHVubmVjZXNzYXJ5IE1NSU8gcmVhZCBkdXJpbmcg dGhlIGNhcGFiaWxpdHkgc2VhcmNoIGFuZCB0cmlnZ2VyCmEgY29tcGlsZXIgd2FybmluZy4KCj4g IAlyZXR1cm4gRklFTERfR0VUKFBDSV9FWFBfTE5LQ0FQX01MVywgbG5rY2FwKTsKPiAgfQo+IEBA IC04OTgsNyArODk3LDYgQEAgaW50IGR3X3BjaWVfbGlua19nZXRfbWF4X2xpbmtfd2lkdGgoc3Ry dWN0IGR3X3BjaWUgKnBjaSkKPiAgc3RhdGljIHZvaWQgZHdfcGNpZV9saW5rX3NldF9tYXhfbGlu a193aWR0aChzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1MzIgbnVtX2xhbmVzKQo+ICB7Cj4gIAl1MzIg bG5rY2FwLCBsd3NjLCBwbGM7Cj4gLQl1OCBjYXA7Cj4gIAo+ICAJaWYgKCFudW1fbGFuZXMpCj4g IAkJcmV0dXJuOwo+IEBAIC05MzUsMTAgKzkzMyw5IEBAIHN0YXRpYyB2b2lkIGR3X3BjaWVfbGlu a19zZXRfbWF4X2xpbmtfd2lkdGgoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTMyIG51bV9sYW5lcykK PiAgCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfUE9SVF9MSU5LX0NPTlRST0wsIHBsYyk7 Cj4gIAlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX0xJTktfV0lEVEhfU1BFRURfQ09OVFJP TCwgbHdzYyk7Cj4gIAo+IC0JY2FwID0gZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkocGNpLCBQQ0lf Q0FQX0lEX0VYUCk7Cj4gLQlsbmtjYXAgPSBkd19wY2llX3JlYWRsX2RiaShwY2ksIGNhcCArIFBD SV9FWFBfTE5LQ0FQKTsKPiArCWxua2NhcCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgcGNpLT5w Y2llX2NhcCArIFBDSV9FWFBfTE5LQ0FQKTsKPiAgCUZJRUxEX01PRElGWShQQ0lfRVhQX0xOS0NB UF9NTFcsICZsbmtjYXAsIG51bV9sYW5lcyk7Cj4gLQlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBj YXAgKyBQQ0lfRVhQX0xOS0NBUCwgbG5rY2FwKTsKPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ks IHBjaS0+cGNpZV9jYXAgKyBQQ0lfRVhQX0xOS0NBUCwgbG5rY2FwKTsKPiAgfQoKW1NldmVyaXR5 OiBIaWdoXQpJZiBwY2ktPnBjaWVfY2FwIGhhcHBlbnMgdG8gYmUgMCBoZXJlLCB0aGlzIHdpbGwg cGVyZm9ybSBhIHJlYWQtbW9kaWZ5LXdyaXRlCmF0IG9mZnNldCAwICsgUENJX0VYUF9MTktDQVAg KDB4MEMpLiBDb3VsZCB0aGlzIGRlc3Ryb3kgdGhlIHN0YW5kYXJkClBDSSBIZWFkZXIgVHlwZSBh bmQgQklTVCByZWdpc3RlcnM/CgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNo aWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwNzIwMTUwNjE5LjI0NzMzLTEtMTgyNTUxMTcxNTlAMTYz LmNvbT9wYXJ0PTIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFtbG9naWMK