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 4F9273D9058; Tue, 28 Jul 2026 07:20:41 +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=1785223243; cv=none; b=LPPi8AFTHd6hT5VCO659ll5qhQqYpA5i14JYf93kBRRD4lwa2T9rmczqhvEOsFCfpijWLOeCaYNJr02MWBU11jhF1KV5O6KFNFBmMLMADIDByf2vGV5gWStqoOb94htsgvdmPoKqRz45tAlTAXU3Ltob/eOtsVp0l2wOUteodBM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785223243; c=relaxed/simple; bh=RQcRYIaoMMyHwhELQmRpMx08wRli9QzO9cuelCLqv1c=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=V9FvS/1iQahfNgaDa49YsOwi8e3si+/yoJaS0tkkr9dU0PpMUeVzHio50XR1or2iYEBE+I7zYEvfHpPFar7P4IvS5EVXGTjEtHj/uJijg3u6cpAj3jh/JQF7yd4VgXfLEso892YcY28OCdPMv3J8p4E0sBLnDOqo5AHBkOd1Pac= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=O/vNw53L; 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="O/vNw53L" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9B1591F000E9; Tue, 28 Jul 2026 07:20:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785223241; bh=8WfwwvGg2qLTfrP4eVDki/1M/8rAfrjDZMctghwmJaI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=O/vNw53LvxSL676ugotdtxAGSeXDMgseMhyJFSv5tw0R4FcroYl29Wt9c1/OqrJQh y8+gNEarv6pe1O4yOyXo0a2M/TXh8kJ7RSKHQhxsLVvpHsvBrA2iQpD5uqiLdhgoa8 tzJqJZobNVCNWaa8+TogduXmZJb/4ZmdTN9lEOd4Ta8FOHm36Mk1GbDa07s0m9TIvI GW76KXZgh2/8YiVDdYIVjDOxCnm0+WDESZSFFh4T4I9Rqrq6UogfxFDGyGE5S7f+qT y1OHtorph6gkY3DTnDBMK/jPnlDcvAdu3T2ysRXl/ws50t5iRnJXor9mhDb77yyDEO dJ9ZEEHNdYRgg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v7 05/12] i3c: master: Add support for devices without PID Reply-To: sashiko-reviews@lists.linux.dev To: "Akhil R" Cc: robh@kernel.org, linux-i3c@lists.infradead.org, Frank.Li@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org, "Alexandre Belloni" In-Reply-To: <20260728065955.809445-6-akhilrajeev@nvidia.com> References: <20260728065955.809445-1-akhilrajeev@nvidia.com> <20260728065955.809445-6-akhilrajeev@nvidia.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 28 Jul 2026 07:20:40 +0000 Message-Id: <20260728072040.9B1591F000E9@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] Dead code in `i3c_master_attach_boardinfo` fallback match logic pr= events Device Tree node attachment for SETAASA devices discovered via DAA. - [High] Duplicate I3C device creation for SETAASA devices participating in= Dynamic Address Assignment. Pre-existing issues: - [High] Use-After-Free and Double-Free on driver teardown due to a danglin= g pointer left by `device_register()` failure. -- --- Patch [5]: [PATCH v7 05/12] i3c: master: Add support for devices withou= t PID --- commit 978db33da88aedc2a14abd69fdc128b5e3961e92 Author: Akhil R i3c: master: Add support for devices without PID Devices using SETAASA for address assignment are not required to have a 48-bit PID according to the I3C specification. Allow such devices to register and use the static address where PID was required. > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > index 87749a739e62d..488177d95e484 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c > @@ -2001,8 +2001,17 @@ i3c_master_register_new_i3c_devs(struct i3c_master= _controller *master) > desc->dev->dev.type =3D &i3c_device_type; > desc->dev->dev.bus =3D &i3c_bus_type; > desc->dev->dev.release =3D i3c_device_release; > - dev_set_name(&desc->dev->dev, "%d-%llx", master->bus.id, > - desc->info.pid); > + > + /* > + * For devices without PID (e.g., SETAASA devices), use > + * static address for naming instead. > + */ > + if (desc->info.pid) > + dev_set_name(&desc->dev->dev, "%d-%llx", master->bus.id, > + desc->info.pid); > + else > + dev_set_name(&desc->dev->dev, "%d-%02x", master->bus.id, > + desc->info.static_addr); > =20 > if (desc->boardinfo) > device_set_node(&desc->dev->dev, desc->boardinfo->fwnode); [Severity: High] This is a pre-existing issue, but does device_register() failure in this function leave a dangling pointer that causes a use-after-free later? Just below this hunk in i3c_master_register_new_i3c_devs(): ret =3D device_register(&desc->dev->dev); if (ret) { dev_err(&master->dev, "Failed to add I3C device (err =3D %d)\n", ret); put_device(&desc->dev->dev); } When put_device() frees desc->dev->dev, desc->dev is not set to NULL. Later, if the master is unregistered, i3c_master_unregister_i3c_devs() iterates through the list and dereferences this dangling pointer: if (!i3cdev->dev) continue; i3cdev->dev->desc =3D NULL; // ... else put_device(&i3cdev->dev->dev); Could desc->dev be set to NULL after put_device() to prevent this? [ ... ] > @@ -2401,8 +2410,18 @@ static void i3c_master_attach_boardinfo(struct i3c= _dev_desc *i3cdev) > struct i3c_dev_boardinfo *i3cboardinfo; > =20 > list_for_each_entry(i3cboardinfo, &master->boardinfo.i3c, node) { > - if (i3cdev->info.pid !=3D i3cboardinfo->pid) > - continue; > + /* > + * For devices without PID (e.g., SETAASA devices), match by > + * static address. For devices with PID, match by PID. > + */ > + if (i3cboardinfo->pid) { > + if (i3cdev->info.pid !=3D i3cboardinfo->pid) > + continue; > + } else { > + if (!i3cboardinfo->static_addr || > + i3cdev->info.static_addr !=3D i3cboardinfo->static_addr) > + continue; > + } [Severity: High] Will this fallback matching logic fail for SETAASA devices discovered dynamically? If a SETAASA device without a PID in the Device Tree loses its dynamic address and asserts a Hot-Join, the master will execute Dynamic Address Assignment (DAA). During DAA, __i3c_master_add_i3c_dev_locked() allocates a new device descriptor and initializes newdev's static_addr to 0, because the static address cannot be retrieved via CCCs. When i3c_master_attach_boardinfo(newdev) is then called, i3cdev->info.static_addr will be 0. Would this cause the condition i3cdev->info.static_addr !=3D i3cboardinfo->static_addr to always evaluate to true, skipping the boardinfo assignment and preventing the driver from binding? > =20 > i3cdev->boardinfo =3D i3cboardinfo; > i3cdev->info.static_addr =3D i3cboardinfo->static_addr; > @@ -2416,8 +2435,12 @@ i3c_master_search_i3c_dev_duplicate(struct i3c_dev= _desc *refdev) > struct i3c_master_controller *master =3D i3c_dev_get_master(refdev); > struct i3c_dev_desc *i3cdev; > =20 > + if (!refdev->info.pid) > + return NULL; > + > i3c_bus_for_each_i3cdev(&master->bus, i3cdev) { > - if (i3cdev !=3D refdev && i3cdev->info.pid =3D=3D refdev->info.pid) > + if (i3cdev !=3D refdev && i3cdev->info.pid && > + i3cdev->info.pid =3D=3D refdev->info.pid) > return i3cdev; > } > =20 [Severity: High] Does this logic lead to duplicate device creation for SETAASA devices that participate in Dynamic Address Assignment? If a SETAASA device is defined in the DT without a PID, it is initially added to the master's bus list with pid =3D 0. If the device later asserts a Hot-Join, the master executes DAA, discovers the device, and retrieves its true physical PID. In __i3c_master_add_i3c_dev_locked(), the old device is searched using: olddev =3D i3c_master_search_i3c_dev_duplicate(newdev); Since the existing device has pid =3D 0, the check here for i3cdev->info.pid and i3cdev->info.pid =3D=3D refdev->info.pid will fail to match the newly discovered PID to the existing device. Will this cause the master to add the newly discovered device instead of detaching and updating the existing one, resulting in duplicate devices on the bus? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260728065955.8094= 45-1-akhilrajeev@nvidia.com?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 24648C54F4C for ; Tue, 28 Jul 2026 07:20:43 +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=/j3drokwG0cCs+Pyu2CWxda5pY8XgZ3toFGn1tWeOMc=; b=LURe5XcmDb8P3V jAnvrdfaFxeNnDH+jCcNnPdYPVkvQrZMDlCtd7EBAjQWIVFt+69DqEe9qfLj3qHQqsyw06hxOd+BB vQT3mIcZhE0EwZJPaweHVf6WjQ4156mFVJbKtsgCBKSme8EsVMjPrMJZB6K8ajQZctYhKXIAPOhIJ MyeHgjEVt6zbsErPUvdiuoblw3YTVUEIo2V3RSt8qANLzObvBmrTmCQwsJPmtm2JT8msiNaJgS9al yX3/feZ52csOj3D24kIGWCFoeAhcvfYZAdEPzSCar17I0o04iwWcWTi1VXkoCtdQpZp57GrATy71R PSVcQsLMDBcnU4JHvCuQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1woc7G-00000004d52-3OkM; Tue, 28 Jul 2026 07:20:42 +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 1woc7F-00000004d4R-473q for linux-i3c@lists.infradead.org; Tue, 28 Jul 2026 07:20:42 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 69BA1600FC; Tue, 28 Jul 2026 07:20:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9B1591F000E9; Tue, 28 Jul 2026 07:20:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785223241; bh=8WfwwvGg2qLTfrP4eVDki/1M/8rAfrjDZMctghwmJaI=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=O/vNw53LvxSL676ugotdtxAGSeXDMgseMhyJFSv5tw0R4FcroYl29Wt9c1/OqrJQh y8+gNEarv6pe1O4yOyXo0a2M/TXh8kJ7RSKHQhxsLVvpHsvBrA2iQpD5uqiLdhgoa8 tzJqJZobNVCNWaa8+TogduXmZJb/4ZmdTN9lEOd4Ta8FOHm36Mk1GbDa07s0m9TIvI GW76KXZgh2/8YiVDdYIVjDOxCnm0+WDESZSFFh4T4I9Rqrq6UogfxFDGyGE5S7f+qT y1OHtorph6gkY3DTnDBMK/jPnlDcvAdu3T2ysRXl/ws50t5iRnJXor9mhDb77yyDEO dJ9ZEEHNdYRgg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v7 05/12] i3c: master: Add support for devices without PID To: "Akhil R" Cc: robh@kernel.org, linux-i3c@lists.infradead.org, Frank.Li@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org, "Alexandre Belloni" In-Reply-To: <20260728065955.809445-6-akhilrajeev@nvidia.com> References: <20260728065955.809445-1-akhilrajeev@nvidia.com> <20260728065955.809445-6-akhilrajeev@nvidia.com> Date: Tue, 28 Jul 2026 07:20:40 +0000 Message-Id: <20260728072040.9B1591F000E9@smtp.kernel.org> X-BeenThere: linux-i3c@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-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBE ZWFkIGNvZGUgaW4gYGkzY19tYXN0ZXJfYXR0YWNoX2JvYXJkaW5mb2AgZmFsbGJhY2sgbWF0Y2gg bG9naWMgcHJldmVudHMgRGV2aWNlIFRyZWUgbm9kZSBhdHRhY2htZW50IGZvciBTRVRBQVNBIGRl dmljZXMgZGlzY292ZXJlZCB2aWEgREFBLgotIFtIaWdoXSBEdXBsaWNhdGUgSTNDIGRldmljZSBj cmVhdGlvbiBmb3IgU0VUQUFTQSBkZXZpY2VzIHBhcnRpY2lwYXRpbmcgaW4gRHluYW1pYyBBZGRy ZXNzIEFzc2lnbm1lbnQuCgpQcmUtZXhpc3RpbmcgaXNzdWVzOgotIFtIaWdoXSBVc2UtQWZ0ZXIt RnJlZSBhbmQgRG91YmxlLUZyZWUgb24gZHJpdmVyIHRlYXJkb3duIGR1ZSB0byBhIGRhbmdsaW5n IHBvaW50ZXIgbGVmdCBieSBgZGV2aWNlX3JlZ2lzdGVyKClgIGZhaWx1cmUuCi0tCgotLS0gUGF0 Y2ggWzVdOiBbUEFUQ0ggdjcgMDUvMTJdIGkzYzogbWFzdGVyOiBBZGQgc3VwcG9ydCBmb3IgZGV2 aWNlcyB3aXRob3V0IFBJRCAtLS0KY29tbWl0IDk3OGRiMzNkYTg4YWVkYzJhMTRhYmQ2OWZkYzEy OGI1ZTM5NjFlOTIKQXV0aG9yOiBBa2hpbCBSIDxha2hpbHJhamVldkBudmlkaWEuY29tPgoKaTNj OiBtYXN0ZXI6IEFkZCBzdXBwb3J0IGZvciBkZXZpY2VzIHdpdGhvdXQgUElECgpEZXZpY2VzIHVz aW5nIFNFVEFBU0EgZm9yIGFkZHJlc3MgYXNzaWdubWVudCBhcmUgbm90IHJlcXVpcmVkIHRvIGhh dmUKYSA0OC1iaXQgUElEIGFjY29yZGluZyB0byB0aGUgSTNDIHNwZWNpZmljYXRpb24uIEFsbG93 IHN1Y2ggZGV2aWNlcyB0bwpyZWdpc3RlciBhbmQgdXNlIHRoZSBzdGF0aWMgYWRkcmVzcyB3aGVy ZSBQSUQgd2FzIHJlcXVpcmVkLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pM2MvbWFzdGVyLmMg Yi9kcml2ZXJzL2kzYy9tYXN0ZXIuYwo+IGluZGV4IDg3NzQ5YTczOWU2MmQuLjQ4ODE3N2Q5NWU0 ODQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pM2MvbWFzdGVyLmMKPiArKysgYi9kcml2ZXJzL2kz Yy9tYXN0ZXIuYwo+IEBAIC0yMDAxLDggKzIwMDEsMTcgQEAgaTNjX21hc3Rlcl9yZWdpc3Rlcl9u ZXdfaTNjX2RldnMoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKQo+ICAJCWRl c2MtPmRldi0+ZGV2LnR5cGUgPSAmaTNjX2RldmljZV90eXBlOwo+ICAJCWRlc2MtPmRldi0+ZGV2 LmJ1cyA9ICZpM2NfYnVzX3R5cGU7Cj4gIAkJZGVzYy0+ZGV2LT5kZXYucmVsZWFzZSA9IGkzY19k ZXZpY2VfcmVsZWFzZTsKPiAtCQlkZXZfc2V0X25hbWUoJmRlc2MtPmRldi0+ZGV2LCAiJWQtJWxs eCIsIG1hc3Rlci0+YnVzLmlkLAo+IC0JCQkgICAgIGRlc2MtPmluZm8ucGlkKTsKPiArCj4gKwkJ LyoKPiArCQkgKiBGb3IgZGV2aWNlcyB3aXRob3V0IFBJRCAoZS5nLiwgU0VUQUFTQSBkZXZpY2Vz KSwgdXNlCj4gKwkJICogc3RhdGljIGFkZHJlc3MgZm9yIG5hbWluZyBpbnN0ZWFkLgo+ICsJCSAq Lwo+ICsJCWlmIChkZXNjLT5pbmZvLnBpZCkKPiArCQkJZGV2X3NldF9uYW1lKCZkZXNjLT5kZXYt PmRldiwgIiVkLSVsbHgiLCBtYXN0ZXItPmJ1cy5pZCwKPiArCQkJCSAgICAgZGVzYy0+aW5mby5w aWQpOwo+ICsJCWVsc2UKPiArCQkJZGV2X3NldF9uYW1lKCZkZXNjLT5kZXYtPmRldiwgIiVkLSUw MngiLCBtYXN0ZXItPmJ1cy5pZCwKPiArCQkJCSAgICAgZGVzYy0+aW5mby5zdGF0aWNfYWRkcik7 Cj4gIAo+ICAJCWlmIChkZXNjLT5ib2FyZGluZm8pCj4gIAkJCWRldmljZV9zZXRfbm9kZSgmZGVz Yy0+ZGV2LT5kZXYsIGRlc2MtPmJvYXJkaW5mby0+Zndub2RlKTsKCltTZXZlcml0eTogSGlnaF0K VGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGRvZXMgZGV2aWNlX3JlZ2lzdGVyKCkg ZmFpbHVyZSBpbiB0aGlzCmZ1bmN0aW9uIGxlYXZlIGEgZGFuZ2xpbmcgcG9pbnRlciB0aGF0IGNh dXNlcyBhIHVzZS1hZnRlci1mcmVlIGxhdGVyPwoKSnVzdCBiZWxvdyB0aGlzIGh1bmsgaW4gaTNj X21hc3Rlcl9yZWdpc3Rlcl9uZXdfaTNjX2RldnMoKToKCiAgICByZXQgPSBkZXZpY2VfcmVnaXN0 ZXIoJmRlc2MtPmRldi0+ZGV2KTsKICAgIGlmIChyZXQpIHsKICAgICAgICBkZXZfZXJyKCZtYXN0 ZXItPmRldiwKICAgICAgICAgICAgIkZhaWxlZCB0byBhZGQgSTNDIGRldmljZSAoZXJyID0gJWQp XG4iLCByZXQpOwogICAgICAgIHB1dF9kZXZpY2UoJmRlc2MtPmRldi0+ZGV2KTsKICAgIH0KCldo ZW4gcHV0X2RldmljZSgpIGZyZWVzIGRlc2MtPmRldi0+ZGV2LCBkZXNjLT5kZXYgaXMgbm90IHNl dCB0byBOVUxMLgpMYXRlciwgaWYgdGhlIG1hc3RlciBpcyB1bnJlZ2lzdGVyZWQsIGkzY19tYXN0 ZXJfdW5yZWdpc3Rlcl9pM2NfZGV2cygpCml0ZXJhdGVzIHRocm91Z2ggdGhlIGxpc3QgYW5kIGRl cmVmZXJlbmNlcyB0aGlzIGRhbmdsaW5nIHBvaW50ZXI6CgogICAgaWYgKCFpM2NkZXYtPmRldikK ICAgICAgICBjb250aW51ZTsKICAgIGkzY2Rldi0+ZGV2LT5kZXNjID0gTlVMTDsKICAgIC8vIC4u LgogICAgZWxzZQogICAgICAgIHB1dF9kZXZpY2UoJmkzY2Rldi0+ZGV2LT5kZXYpOwoKQ291bGQg ZGVzYy0+ZGV2IGJlIHNldCB0byBOVUxMIGFmdGVyIHB1dF9kZXZpY2UoKSB0byBwcmV2ZW50IHRo aXM/CgpbIC4uLiBdCgo+IEBAIC0yNDAxLDggKzI0MTAsMTggQEAgc3RhdGljIHZvaWQgaTNjX21h c3Rlcl9hdHRhY2hfYm9hcmRpbmZvKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmkzY2RldikKPiAgCXN0 cnVjdCBpM2NfZGV2X2JvYXJkaW5mbyAqaTNjYm9hcmRpbmZvOwo+ICAKPiAgCWxpc3RfZm9yX2Vh Y2hfZW50cnkoaTNjYm9hcmRpbmZvLCAmbWFzdGVyLT5ib2FyZGluZm8uaTNjLCBub2RlKSB7Cj4g LQkJaWYgKGkzY2Rldi0+aW5mby5waWQgIT0gaTNjYm9hcmRpbmZvLT5waWQpCj4gLQkJCWNvbnRp bnVlOwo+ICsJCS8qCj4gKwkJICogRm9yIGRldmljZXMgd2l0aG91dCBQSUQgKGUuZy4sIFNFVEFB U0EgZGV2aWNlcyksIG1hdGNoIGJ5Cj4gKwkJICogc3RhdGljIGFkZHJlc3MuIEZvciBkZXZpY2Vz IHdpdGggUElELCBtYXRjaCBieSBQSUQuCj4gKwkJICovCj4gKwkJaWYgKGkzY2JvYXJkaW5mby0+ cGlkKSB7Cj4gKwkJCWlmIChpM2NkZXYtPmluZm8ucGlkICE9IGkzY2JvYXJkaW5mby0+cGlkKQo+ ICsJCQkJY29udGludWU7Cj4gKwkJfSBlbHNlIHsKPiArCQkJaWYgKCFpM2Nib2FyZGluZm8tPnN0 YXRpY19hZGRyIHx8Cj4gKwkJCSAgICBpM2NkZXYtPmluZm8uc3RhdGljX2FkZHIgIT0gaTNjYm9h cmRpbmZvLT5zdGF0aWNfYWRkcikKPiArCQkJCWNvbnRpbnVlOwo+ICsJCX0KCltTZXZlcml0eTog SGlnaF0KV2lsbCB0aGlzIGZhbGxiYWNrIG1hdGNoaW5nIGxvZ2ljIGZhaWwgZm9yIFNFVEFBU0Eg ZGV2aWNlcyBkaXNjb3ZlcmVkCmR5bmFtaWNhbGx5PwoKSWYgYSBTRVRBQVNBIGRldmljZSB3aXRo b3V0IGEgUElEIGluIHRoZSBEZXZpY2UgVHJlZSBsb3NlcyBpdHMgZHluYW1pYwphZGRyZXNzIGFu ZCBhc3NlcnRzIGEgSG90LUpvaW4sIHRoZSBtYXN0ZXIgd2lsbCBleGVjdXRlIER5bmFtaWMgQWRk cmVzcwpBc3NpZ25tZW50IChEQUEpLgoKRHVyaW5nIERBQSwgX19pM2NfbWFzdGVyX2FkZF9pM2Nf ZGV2X2xvY2tlZCgpIGFsbG9jYXRlcyBhIG5ldyBkZXZpY2UKZGVzY3JpcHRvciBhbmQgaW5pdGlh bGl6ZXMgbmV3ZGV2J3Mgc3RhdGljX2FkZHIgdG8gMCwgYmVjYXVzZSB0aGUgc3RhdGljCmFkZHJl c3MgY2Fubm90IGJlIHJldHJpZXZlZCB2aWEgQ0NDcy4KCldoZW4gaTNjX21hc3Rlcl9hdHRhY2hf Ym9hcmRpbmZvKG5ld2RldikgaXMgdGhlbiBjYWxsZWQsCmkzY2Rldi0+aW5mby5zdGF0aWNfYWRk ciB3aWxsIGJlIDAuIFdvdWxkIHRoaXMgY2F1c2UgdGhlIGNvbmRpdGlvbgppM2NkZXYtPmluZm8u c3RhdGljX2FkZHIgIT0gaTNjYm9hcmRpbmZvLT5zdGF0aWNfYWRkciB0byBhbHdheXMgZXZhbHVh dGUKdG8gdHJ1ZSwgc2tpcHBpbmcgdGhlIGJvYXJkaW5mbyBhc3NpZ25tZW50IGFuZCBwcmV2ZW50 aW5nIHRoZSBkcml2ZXIgZnJvbQpiaW5kaW5nPwoKPiAgCj4gIAkJaTNjZGV2LT5ib2FyZGluZm8g PSBpM2Nib2FyZGluZm87Cj4gIAkJaTNjZGV2LT5pbmZvLnN0YXRpY19hZGRyID0gaTNjYm9hcmRp bmZvLT5zdGF0aWNfYWRkcjsKPiBAQCAtMjQxNiw4ICsyNDM1LDEyIEBAIGkzY19tYXN0ZXJfc2Vh cmNoX2kzY19kZXZfZHVwbGljYXRlKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKnJlZmRldikKPiAgCXN0 cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlciA9IGkzY19kZXZfZ2V0X21hc3Rlcihy ZWZkZXYpOwo+ICAJc3RydWN0IGkzY19kZXZfZGVzYyAqaTNjZGV2Owo+ICAKPiArCWlmICghcmVm ZGV2LT5pbmZvLnBpZCkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gIAlpM2NfYnVzX2Zvcl9lYWNo X2kzY2RldigmbWFzdGVyLT5idXMsIGkzY2Rldikgewo+IC0JCWlmIChpM2NkZXYgIT0gcmVmZGV2 ICYmIGkzY2Rldi0+aW5mby5waWQgPT0gcmVmZGV2LT5pbmZvLnBpZCkKPiArCQlpZiAoaTNjZGV2 ICE9IHJlZmRldiAmJiBpM2NkZXYtPmluZm8ucGlkICYmCj4gKwkJICAgIGkzY2Rldi0+aW5mby5w aWQgPT0gcmVmZGV2LT5pbmZvLnBpZCkKPiAgCQkJcmV0dXJuIGkzY2RldjsKPiAgCX0KPiAgCgpb U2V2ZXJpdHk6IEhpZ2hdCkRvZXMgdGhpcyBsb2dpYyBsZWFkIHRvIGR1cGxpY2F0ZSBkZXZpY2Ug Y3JlYXRpb24gZm9yIFNFVEFBU0EgZGV2aWNlcyB0aGF0CnBhcnRpY2lwYXRlIGluIER5bmFtaWMg QWRkcmVzcyBBc3NpZ25tZW50PwoKSWYgYSBTRVRBQVNBIGRldmljZSBpcyBkZWZpbmVkIGluIHRo ZSBEVCB3aXRob3V0IGEgUElELCBpdCBpcyBpbml0aWFsbHkKYWRkZWQgdG8gdGhlIG1hc3Rlcidz IGJ1cyBsaXN0IHdpdGggcGlkID0gMC4gSWYgdGhlIGRldmljZSBsYXRlciBhc3NlcnRzIGEKSG90 LUpvaW4sIHRoZSBtYXN0ZXIgZXhlY3V0ZXMgREFBLCBkaXNjb3ZlcnMgdGhlIGRldmljZSwgYW5k IHJldHJpZXZlcyBpdHMKdHJ1ZSBwaHlzaWNhbCBQSUQuCgpJbiBfX2kzY19tYXN0ZXJfYWRkX2kz Y19kZXZfbG9ja2VkKCksIHRoZSBvbGQgZGV2aWNlIGlzIHNlYXJjaGVkIHVzaW5nOgpvbGRkZXYg PSBpM2NfbWFzdGVyX3NlYXJjaF9pM2NfZGV2X2R1cGxpY2F0ZShuZXdkZXYpOwoKU2luY2UgdGhl IGV4aXN0aW5nIGRldmljZSBoYXMgcGlkID0gMCwgdGhlIGNoZWNrIGhlcmUgZm9yIGkzY2Rldi0+ aW5mby5waWQKYW5kIGkzY2Rldi0+aW5mby5waWQgPT0gcmVmZGV2LT5pbmZvLnBpZCB3aWxsIGZh aWwgdG8gbWF0Y2ggdGhlIG5ld2x5CmRpc2NvdmVyZWQgUElEIHRvIHRoZSBleGlzdGluZyBkZXZp Y2UuIFdpbGwgdGhpcyBjYXVzZSB0aGUgbWFzdGVyIHRvIGFkZAp0aGUgbmV3bHkgZGlzY292ZXJl ZCBkZXZpY2UgaW5zdGVhZCBvZiBkZXRhY2hpbmcgYW5kIHVwZGF0aW5nIHRoZSBleGlzdGluZwpv bmUsIHJlc3VsdGluZyBpbiBkdXBsaWNhdGUgZGV2aWNlcyBvbiB0aGUgYnVzPwoKLS0gClNhc2hp a28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDcyODA2 NTk1NS44MDk0NDUtMS1ha2hpbHJhamVldkBudmlkaWEuY29tP3BhcnQ9NQoKLS0gCmxpbnV4LWkz YyBtYWlsaW5nIGxpc3QKbGludXgtaTNjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1pM2MK