From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792899853; b=Y7yMdNroebH4PWrk9t9vg9dn4W8V9Dg2IiCC2fiJEAuCdqbYd9juu7kZzfqvpNoSz5rK URfPnj4CV62D/PFB+V5BZP/Z0LPxoXLwd8rKWBdUu3mU7iVd+12MmMh0L2i1ZmJsf2ewS fqr/ODq/faONVGIWaV/Cpqs167HugcdbOgXn82kFba6UyoWNpk/X0bvZR8p3psmr2qxpF vUlgaDkzaY2k/QvED1kiojIl26SE88fBajCUcgGvX0KOJEkwmfykVTjr/YB10i9MZO2g7 TmU2jsD6WBBVrvMQjE/oi8Ya2wLY/ksDMgstyjhY++Bzpreqqgn/AW1BiPAZwyyiUag== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792899853; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=3B8FSFySMXgVmqpSaZ5ZZGIrWYl20ZD9asecGND8meI=; b=iFaJtGs3EPX5jtyfhfPG2Sg/Z19N570rCehd642oW3SK5VZ36i5JgoMGK4syP0gq8sGV BL1w1B5fIw/nIFAosxX8CFlw1Ob1Vz/pp1a6UWEjV/eqnFMRqZOWNenDFA6frJVdSAuwG lEoMakrMCKWZ+TiEJnKC48ps62Cny6zS4zEZbb9FVFKF4oRHdV5Qx28F8xe2yPh49YF/A h809AHNRSj0IvzhsjnK5tW0CubOlTRHbQwTQx0OJTYXatTKuXcqFYUyBtowfqLXtCrlpF +HW0C86JCngV50+gnrGeisvtEXk4pzDV0+9BOKbGpnDzpzRMsJEYN354Ajs2bkcw/Pg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=b+Nj4BOl; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55EC6606A31A for ; Sun, 25 Oct 2026 03:44:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=b+Nj4BOl Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82AEC1F01825; Sun, 25 Oct 2026 03:44:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792899853; bh=3B8FSFySMXgVmqpSaZ5ZZGIrWYl20ZD9asecGND8meI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=b+Nj4BOlnPTjLvkTf0/YxwYs3ouzj+SC7HJqKdBvSkCW/UJtno07waDHFPeLE7wJT YUoZ/L7VFto2E7J3Io0M236R8dVLyAdMDUHpyM2vLu1UCk/slSLHf/1SnVvVHPIsm4 dDAuXIntlvFolSN+VMNsTXhsnrp48vLGcBI6PILSw3HJBI+GHrQAcbO7T2EI5NzLjY wLteo3JMr6u849c4X7L/C883V3wyhUHic8rqWpLnHLzcucZQZDmyh05RlDhKG+UpYO Exb1D9BmOYC2L5MjtwuAJwnvtom8sR6dpQI7QpAEU9FkMDlVRqhGoSXASvV/cPq8JX maAb3XW/uc7Gg== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v22 07/14] media: qcom: camss: csiphy: Add support for v2.4.0 two-phase CSIPHY Reply-To: sashiko-reviews@lists.linux.dev To: "Hangxiang Ma" Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, media-ci@linuxtv.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261024-kaanapali-camss-v22-7-7da3ea49c8a1@oss.qualcomm.com> References: <20261024-kaanapali-camss-v22-0-7da3ea49c8a1@oss.qualcomm.com> <20261024-kaanapali-camss-v22-7-7da3ea49c8a1@oss.qualcomm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sun, 25 Oct 2026 03:44:12 +0000 X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] media: qcom: camss: NULL hw_ops deref in msm_csiphy_subdev_init_le= gacy() - [Low] media: qcom: camss: commit message describes phy driver changes -- commit 64814811592ee91f0301ddbd08c2ef3cf1f43a07 Author: Hangxiang Ma media: qcom: camss: csiphy: Add support for v2.4.0 two-phase CSIPHY This commit adds the csiphy_res_kaanapali subdevice resource table for CSIPHY0 through CSIPHY5 and wires it into kaanapali_resources in the Qualcomm CAMSS driver. > media: qcom: camss: csiphy: Add support for v2.4.0 two-phase CSIPHY > =20 > Add support for the v2.4.0 two-phase CSIPHY found on Kaanapali, where > the PHY is driven by the standalone phy-qcom-mipi-csi2 DPHY driver > rather than by CAMSS. Add the mipi_csi2_dphy_3nm_kaanapali configurat= ion, > which reuses the x1e80100 lane sequence, clocks and supplies but sele= cts > the v2.4.0 common status offset, adds Kaanapali power domain and regi= ster > the "qcom,kaanapali-csi2-phy" compatible. > =20 > Reviewed-by: Bryan O'Donoghue > Signed-off-by: Hangxiang Ma [Severity: Low] This isn't a bug, but does the second sentence of the commit message describe changes from an earlier patch in the series ("phy: qcom-mipi-csi2: Add Kaanapali support") rather than this patch? Those changes to drivers/phy/qualcomm/phy-qcom-mipi-csi2-3ph-dphy.c and drivers/phy/qualcomm/phy-qcom-mipi-csi2-core.c were split into that earlier commit, whereas this commit adds csiphy_res_kaanapali in drivers/media/platform/qcom/camss/camss.c and wires .csiphy_res and .csiphy_num into kaanapali_resources. Could the commit message be updated to describe the CAMSS changes in this patch? > diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/pl= atform/qcom/camss/camss.c > index 98ec23c39fda2..0358ee3840129 100644 > --- a/drivers/media/platform/qcom/camss/camss.c > +++ b/drivers/media/platform/qcom/camss/camss.c > @@ -38,6 +38,51 @@ > =20 > static const struct parent_dev_ops vfe_parent_dev_ops; > =20 > +static const struct camss_subdev_resources csiphy_res_kaanapali[] =3D { > + /* CSIPHY0 */ > + { > + .csiphy =3D { > + .id =3D 0, > + .formats =3D &csiphy_formats_sdm845 > + }, > + }, [ ... ] > @@ -5606,8 +5651,10 @@ static void camss_remove(struct platform_device *p= dev) > static const struct camss_resources kaanapali_resources =3D { > .version =3D CAMSS_KAANAPALI, > .pd_name =3D "top", > + .csiphy_res =3D csiphy_res_kaanapali, > .icc_res =3D icc_res_kaanapali, > .icc_path_num =3D ARRAY_SIZE(icc_res_kaanapali), > + .csiphy_num =3D ARRAY_SIZE(csiphy_res_kaanapali), > }; [Severity: High] Can this dereference a NULL csiphy->res->hw_ops pointer in msm_csiphy_subdev_init_legacy() when probing qcom,kaanapali-camss without any connected external PHY endpoints in the device tree (for example, with the default empty port nodes in kaanapali.dtsi or when only using internal TPGs)? Because Kaanapali CSIPHY blocks are driven by the standalone PHY driver, csiphy_res_kaanapali leaves .csiphy.hw_ops as NULL. However, during camss_probe() -> camss_init_subdevices() -> camss_detect_legacy_phy() in drivers/media/platform/qcom/camss/camss.c, camss->legacy_phy defaults to true when no endpoint connected to a remote node named "phy" is found: camss->legacy_phy =3D true; /* Find first remote-endpoint and determine if its a PHY */ for_each_endpoint_of_node(camss->dev->of_node, ep) { remote =3D of_graph_get_remote_port_parent(ep); if (!remote) continue; camss->legacy_phy =3D !of_node_name_eq(remote, "phy"); of_node_put(remote); of_node_put(ep); break; } Then camss_init_subdevices() takes the legacy path: for (i =3D 0; i < camss->res->csiphy_num; i++) { if (!camss->legacy_phy) { ret =3D msm_csiphy_subdev_init(camss, i); } else { ret =3D msm_csiphy_subdev_init_legacy(camss, &camss->csiphy[i], &res->csiphy_res[i], res->csiphy_res[i].csiphy.id); } and msm_csiphy_subdev_init_legacy() in drivers/media/platform/qcom/camss/camss-csiphy.c unconditionally dereferences csiphy->res->hw_ops: csiphy->camss =3D camss; csiphy->id =3D id; csiphy->cfg.combo_mode =3D 0; csiphy->res =3D &res->csiphy; ret =3D csiphy->res->hw_ops->init(csiphy); Should camss_detect_legacy_phy() or camss_init_subdevices() avoid selecting legacy PHY mode on platforms where csiphy_res[i].csiphy.hw_ops is NULL? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261024-kaanapali-= camss-v22-0-7da3ea49c8a1@oss.qualcomm.com?part=3D7 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B18E606A31A for ; Sun, 25 Oct 2026 03:44:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=F44/TskK; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=b+Nj4BOl 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:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=bzg5oHPlbSTOoIjzcCkXStXbscodtjSyjRlxU06luaY=; b=F44/TskKo7B3LrfXBXcOzWTNzX 6HLm6pRbfjnqtSvUJ/6yNo13mm8tqZiK8h5TkSIus81z+Mt6iwBxIB6nAkoj196aymGBGd+81EWcB wKQZO4DYi9isM5jEUvrJ8vQoPu7x4zSA+NTZX4Il8RVvGbMuGfIDNfhlR2Wwk2I1NJRBYcWvCOq6z p2n6+b4+TLwweX6+/UCZUux6L+VkaJCSD5HqPCOgHmN3mZ0k//iM7m+4an/5ByEhVuB/SgMogDAeu N+5v9VCvHf3/XjK8XrkVsUgq5kRGni8iqBEgjhXEGlTh1h0k9dKDqoMNAks99J2YNWZFx+0ZOrTO4 tJAH8WNg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xKp9b-00000000hWG-0ET3; Sun, 25 Oct 2026 03:44:15 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xKp9Z-00000000hW8-1Orl for linux-phy@lists.infradead.org; Sun, 25 Oct 2026 03:44:13 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 1CA9443F1C; Sun, 25 Oct 2026 03:44:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82AEC1F01825; Sun, 25 Oct 2026 03:44:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792899853; bh=3B8FSFySMXgVmqpSaZ5ZZGIrWYl20ZD9asecGND8meI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=b+Nj4BOlnPTjLvkTf0/YxwYs3ouzj+SC7HJqKdBvSkCW/UJtno07waDHFPeLE7wJT YUoZ/L7VFto2E7J3Io0M236R8dVLyAdMDUHpyM2vLu1UCk/slSLHf/1SnVvVHPIsm4 dDAuXIntlvFolSN+VMNsTXhsnrp48vLGcBI6PILSw3HJBI+GHrQAcbO7T2EI5NzLjY wLteo3JMr6u849c4X7L/C883V3wyhUHic8rqWpLnHLzcucZQZDmyh05RlDhKG+UpYO Exb1D9BmOYC2L5MjtwuAJwnvtom8sR6dpQI7QpAEU9FkMDlVRqhGoSXASvV/cPq8JX maAb3XW/uc7Gg== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v22 07/14] media: qcom: camss: csiphy: Add support for v2.4.0 two-phase CSIPHY To: "Hangxiang Ma" Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, media-ci@linuxtv.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261024-kaanapali-camss-v22-7-7da3ea49c8a1@oss.qualcomm.com> References: <20261024-kaanapali-camss-v22-0-7da3ea49c8a1@oss.qualcomm.com> <20261024-kaanapali-camss-v22-7-7da3ea49c8a1@oss.qualcomm.com> Date: Sun, 25 Oct 2026 03:44:12 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" X-Spam-Status: No, score=-14.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIG1lZGlhOiBxY29tOiBj YW1zczogTlVMTCBod19vcHMgZGVyZWYgaW4gbXNtX2NzaXBoeV9zdWJkZXZfaW5pdF9sZWdhY3ko KQotIFtMb3ddIG1lZGlhOiBxY29tOiBjYW1zczogY29tbWl0IG1lc3NhZ2UgZGVzY3JpYmVzIHBo eSBkcml2ZXIgY2hhbmdlcwotLQoKY29tbWl0IDY0ODE0ODExNTkyZWU5MWYwMzAxZGRiZDA4YzJl ZjNjZjFmNDNhMDcKQXV0aG9yOiBIYW5neGlhbmcgTWEgPGhhbmd4aWFuZy5tYUBvc3MucXVhbGNv bW0uY29tPgoKbWVkaWE6IHFjb206IGNhbXNzOiBjc2lwaHk6IEFkZCBzdXBwb3J0IGZvciB2Mi40 LjAgdHdvLXBoYXNlIENTSVBIWQoKVGhpcyBjb21taXQgYWRkcyB0aGUgY3NpcGh5X3Jlc19rYWFu YXBhbGkgc3ViZGV2aWNlIHJlc291cmNlIHRhYmxlIGZvcgpDU0lQSFkwIHRocm91Z2ggQ1NJUEhZ NSBhbmQgd2lyZXMgaXQgaW50byBrYWFuYXBhbGlfcmVzb3VyY2VzIGluIHRoZQpRdWFsY29tbSBD QU1TUyBkcml2ZXIuCgo+ICAgICBtZWRpYTogcWNvbTogY2Ftc3M6IGNzaXBoeTogQWRkIHN1cHBv cnQgZm9yIHYyLjQuMCB0d28tcGhhc2UgQ1NJUEhZCj4gICAgIAo+ICAgICBBZGQgc3VwcG9ydCBm b3IgdGhlIHYyLjQuMCB0d28tcGhhc2UgQ1NJUEhZIGZvdW5kIG9uIEthYW5hcGFsaSwgd2hlcmUK PiAgICAgdGhlIFBIWSBpcyBkcml2ZW4gYnkgdGhlIHN0YW5kYWxvbmUgcGh5LXFjb20tbWlwaS1j c2kyIERQSFkgZHJpdmVyCj4gICAgIHJhdGhlciB0aGFuIGJ5IENBTVNTLiBBZGQgdGhlIG1pcGlf Y3NpMl9kcGh5XzNubV9rYWFuYXBhbGkgY29uZmlndXJhdGlvbiwKPiAgICAgd2hpY2ggcmV1c2Vz IHRoZSB4MWU4MDEwMCBsYW5lIHNlcXVlbmNlLCBjbG9ja3MgYW5kIHN1cHBsaWVzIGJ1dCBzZWxl Y3RzCj4gICAgIHRoZSB2Mi40LjAgY29tbW9uIHN0YXR1cyBvZmZzZXQsIGFkZHMgS2FhbmFwYWxp IHBvd2VyIGRvbWFpbiBhbmQgcmVnaXN0ZXIKPiAgICAgdGhlICJxY29tLGthYW5hcGFsaS1jc2ky LXBoeSIgY29tcGF0aWJsZS4KPiAgICAgCj4gICAgIFJldmlld2VkLWJ5OiBCcnlhbiBPJ0Rvbm9n aHVlIDxicnlhbi5vZG9ub2dodWVAbGluYXJvLm9yZz4KPiAgICAgU2lnbmVkLW9mZi1ieTogSGFu Z3hpYW5nIE1hIDxoYW5neGlhbmcubWFAb3NzLnF1YWxjb21tLmNvbT4KCltTZXZlcml0eTogTG93 XQpUaGlzIGlzbid0IGEgYnVnLCBidXQgZG9lcyB0aGUgc2Vjb25kIHNlbnRlbmNlIG9mIHRoZSBj b21taXQgbWVzc2FnZQpkZXNjcmliZSBjaGFuZ2VzIGZyb20gYW4gZWFybGllciBwYXRjaCBpbiB0 aGUgc2VyaWVzICgicGh5OiBxY29tLW1pcGktY3NpMjoKQWRkIEthYW5hcGFsaSBzdXBwb3J0Iikg cmF0aGVyIHRoYW4gdGhpcyBwYXRjaD8KClRob3NlIGNoYW5nZXMgdG8gZHJpdmVycy9waHkvcXVh bGNvbW0vcGh5LXFjb20tbWlwaS1jc2kyLTNwaC1kcGh5LmMgYW5kCmRyaXZlcnMvcGh5L3F1YWxj b21tL3BoeS1xY29tLW1pcGktY3NpMi1jb3JlLmMgd2VyZSBzcGxpdCBpbnRvIHRoYXQgZWFybGll cgpjb21taXQsIHdoZXJlYXMgdGhpcyBjb21taXQgYWRkcyBjc2lwaHlfcmVzX2thYW5hcGFsaSBp bgpkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vY2Ftc3MvY2Ftc3MuYyBhbmQgd2lyZXMgLmNz aXBoeV9yZXMgYW5kCi5jc2lwaHlfbnVtIGludG8ga2FhbmFwYWxpX3Jlc291cmNlcy4gQ291bGQg dGhlIGNvbW1pdCBtZXNzYWdlIGJlIHVwZGF0ZWQKdG8gZGVzY3JpYmUgdGhlIENBTVNTIGNoYW5n ZXMgaW4gdGhpcyBwYXRjaD8KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v cWNvbS9jYW1zcy9jYW1zcy5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2NhbXNzL2Nh bXNzLmMKPiBpbmRleCA5OGVjMjNjMzlmZGEyLi4wMzU4ZWUzODQwMTI5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9jYW1zcy9jYW1zcy5jCj4gKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9xY29tL2NhbXNzL2NhbXNzLmMKPiBAQCAtMzgsNiArMzgsNTEgQEAK PiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGFyZW50X2Rldl9vcHMgdmZlX3BhcmVudF9kZXZf b3BzOwo+ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjYW1zc19zdWJkZXZfcmVzb3VyY2VzIGNz aXBoeV9yZXNfa2FhbmFwYWxpW10gPSB7Cj4gKwkvKiBDU0lQSFkwICovCj4gKwl7Cj4gKwkJLmNz aXBoeSA9IHsKPiArCQkJLmlkID0gMCwKPiArCQkJLmZvcm1hdHMgPSAmY3NpcGh5X2Zvcm1hdHNf c2RtODQ1Cj4gKwkJfSwKPiArCX0sCgpbIC4uLiBdCgo+IEBAIC01NjA2LDggKzU2NTEsMTAgQEAg c3RhdGljIHZvaWQgY2Ftc3NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2Ftc3NfcmVzb3VyY2VzIGthYW5hcGFsaV9yZXNvdXJjZXMg PSB7Cj4gIAkudmVyc2lvbiA9IENBTVNTX0tBQU5BUEFMSSwKPiAgCS5wZF9uYW1lID0gInRvcCIs Cj4gKwkuY3NpcGh5X3JlcyA9IGNzaXBoeV9yZXNfa2FhbmFwYWxpLAo+ICAJLmljY19yZXMgPSBp Y2NfcmVzX2thYW5hcGFsaSwKPiAgCS5pY2NfcGF0aF9udW0gPSBBUlJBWV9TSVpFKGljY19yZXNf a2FhbmFwYWxpKSwKPiArCS5jc2lwaHlfbnVtID0gQVJSQVlfU0laRShjc2lwaHlfcmVzX2thYW5h cGFsaSksCj4gIH07CgpbU2V2ZXJpdHk6IEhpZ2hdCkNhbiB0aGlzIGRlcmVmZXJlbmNlIGEgTlVM TCBjc2lwaHktPnJlcy0+aHdfb3BzIHBvaW50ZXIgaW4KbXNtX2NzaXBoeV9zdWJkZXZfaW5pdF9s ZWdhY3koKSB3aGVuIHByb2JpbmcgcWNvbSxrYWFuYXBhbGktY2Ftc3Mgd2l0aG91dAphbnkgY29u bmVjdGVkIGV4dGVybmFsIFBIWSBlbmRwb2ludHMgaW4gdGhlIGRldmljZSB0cmVlIChmb3IgZXhh bXBsZSwgd2l0aAp0aGUgZGVmYXVsdCBlbXB0eSBwb3J0IG5vZGVzIGluIGthYW5hcGFsaS5kdHNp IG9yIHdoZW4gb25seSB1c2luZyBpbnRlcm5hbApUUEdzKT8KCkJlY2F1c2UgS2FhbmFwYWxpIENT SVBIWSBibG9ja3MgYXJlIGRyaXZlbiBieSB0aGUgc3RhbmRhbG9uZSBQSFkgZHJpdmVyLApjc2lw aHlfcmVzX2thYW5hcGFsaSBsZWF2ZXMgLmNzaXBoeS5od19vcHMgYXMgTlVMTC4KCkhvd2V2ZXIs IGR1cmluZyBjYW1zc19wcm9iZSgpIC0+IGNhbXNzX2luaXRfc3ViZGV2aWNlcygpIC0+CmNhbXNz X2RldGVjdF9sZWdhY3lfcGh5KCkgaW4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2NhbXNz L2NhbXNzLmMsCmNhbXNzLT5sZWdhY3lfcGh5IGRlZmF1bHRzIHRvIHRydWUgd2hlbiBubyBlbmRw b2ludCBjb25uZWN0ZWQgdG8gYSByZW1vdGUKbm9kZSBuYW1lZCAicGh5IiBpcyBmb3VuZDoKCglj YW1zcy0+bGVnYWN5X3BoeSA9IHRydWU7CgoJLyogRmluZCBmaXJzdCByZW1vdGUtZW5kcG9pbnQg YW5kIGRldGVybWluZSBpZiBpdHMgYSBQSFkgKi8KCWZvcl9lYWNoX2VuZHBvaW50X29mX25vZGUo Y2Ftc3MtPmRldi0+b2Zfbm9kZSwgZXApIHsKCQlyZW1vdGUgPSBvZl9ncmFwaF9nZXRfcmVtb3Rl X3BvcnRfcGFyZW50KGVwKTsKCQlpZiAoIXJlbW90ZSkKCQkJY29udGludWU7CgoJCWNhbXNzLT5s ZWdhY3lfcGh5ID0gIW9mX25vZGVfbmFtZV9lcShyZW1vdGUsICJwaHkiKTsKCQlvZl9ub2RlX3B1 dChyZW1vdGUpOwoJCW9mX25vZGVfcHV0KGVwKTsKCQlicmVhazsKCX0KClRoZW4gY2Ftc3NfaW5p dF9zdWJkZXZpY2VzKCkgdGFrZXMgdGhlIGxlZ2FjeSBwYXRoOgoKCWZvciAoaSA9IDA7IGkgPCBj YW1zcy0+cmVzLT5jc2lwaHlfbnVtOyBpKyspIHsKCQlpZiAoIWNhbXNzLT5sZWdhY3lfcGh5KSB7 CgkJCXJldCA9IG1zbV9jc2lwaHlfc3ViZGV2X2luaXQoY2Ftc3MsIGkpOwoJCX0gZWxzZSB7CgkJ CXJldCA9IG1zbV9jc2lwaHlfc3ViZGV2X2luaXRfbGVnYWN5KGNhbXNzLAoJCQkJCQkJICAgICZj YW1zcy0+Y3NpcGh5W2ldLAoJCQkJCQkJICAgICZyZXMtPmNzaXBoeV9yZXNbaV0sCgkJCQkJCQkg ICAgcmVzLT5jc2lwaHlfcmVzW2ldLmNzaXBoeS5pZCk7CgkJfQoKYW5kIG1zbV9jc2lwaHlfc3Vi ZGV2X2luaXRfbGVnYWN5KCkgaW4KZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2NhbXNzL2Nh bXNzLWNzaXBoeS5jIHVuY29uZGl0aW9uYWxseQpkZXJlZmVyZW5jZXMgY3NpcGh5LT5yZXMtPmh3 X29wczoKCgljc2lwaHktPmNhbXNzID0gY2Ftc3M7Cgljc2lwaHktPmlkID0gaWQ7Cgljc2lwaHkt PmNmZy5jb21ib19tb2RlID0gMDsKCWNzaXBoeS0+cmVzID0gJnJlcy0+Y3NpcGh5OwoKCXJldCA9 IGNzaXBoeS0+cmVzLT5od19vcHMtPmluaXQoY3NpcGh5KTsKClNob3VsZCBjYW1zc19kZXRlY3Rf bGVnYWN5X3BoeSgpIG9yIGNhbXNzX2luaXRfc3ViZGV2aWNlcygpIGF2b2lkIHNlbGVjdGluZwps ZWdhY3kgUEhZIG1vZGUgb24gcGxhdGZvcm1zIHdoZXJlIGNzaXBoeV9yZXNbaV0uY3NpcGh5Lmh3 X29wcyBpcyBOVUxMPwoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5k ZXYvIy9wYXRjaHNldC8yMDI2MTAyNC1rYWFuYXBhbGktY2Ftc3MtdjIyLTAtN2RhM2VhNDljOGEx QG9zcy5xdWFsY29tbS5jb20/cGFydD03CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51 eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1waHkK