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 5E3D5324B31; Tue, 16 Jun 2026 10:17:39 +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=1781605060; cv=none; b=ZWgfcOQHe+RN8Li2ukDaYJGjP8pA3fMzRrM3JUW2FG/1CZ6D8E8S0y3jCUHw5vqc0Xxohn/S8Dw7k5JPOvHfCj/JS8XCfdumbSzHgUEd7y05jEC5MK6Jv+pCXZwk8qSTAOcp62XXix30Xupr3NJgT/YggiExCIywXRl3RjTuplM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781605060; c=relaxed/simple; bh=3Df0h30B5pdDIgPwrDp5lOb9fhohdDeWpWmslIihrGo=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=BBymxTtDLz0cMGoZeIk/Ajp/jJy9YBAaB+glOubmRCw93qC8xz97bERWp4KOuRN03EHF7enxL5cn0LK3xEpRfMjv+OioiGF8xcTGrSwdQfSRO2zF60HBuVEC1nA0lDuCiwmA8ZQNv0sHolpiLwr8Nd5T/onhDN0hfp1hrouiziE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=g26xIRdj; 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="g26xIRdj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF6891F00A3E; Tue, 16 Jun 2026 10:17:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1781605059; bh=m9fvRfvFkE7880z8gjqTj4HICoZgZjnRQdAV/h+A+Oc=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=g26xIRdjQcF/oS9JPexpO07kEyekl4nXTm2DcEgU7vX6poYAZmj6kMwYMUUGgk2dD lDi7smwhf7a6FRNocUdDiCG3rWVDMUZEd+89FCEbOCKD0ykUMuOPKt2UZmED5y7LHf 52UO4ecWMey2fQHUDvWOne3G/dlB/dM3S1czCAothPKV5QOx9sIWGGHF5P1ar6MGCe B4dOIaZxN2ZvdkPQbdYqmoPEZUh+jnFGhygVQoMA1W2p7t9bHAdhGrtkf8lBLaISII 8pVYFpjbB8ej4RbxsPuIZMXfAeC73FsIRF+PoxqCP0/q1jLEdwqeAJcPM7pkmqDfq6 i/2M4D9ZF9Iwg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 05/12] i3c: master: Add support for devices without PID Reply-To: sashiko-reviews@lists.linux.dev To: "Akhil R" Cc: linux-i3c@lists.infradead.org, conor+dt@kernel.org, robh@kernel.org, linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, Frank.Li@kernel.org In-Reply-To: <20260616095429.3947205-6-akhilrajeev@nvidia.com> References: <20260616095429.3947205-6-akhilrajeev@nvidia.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 16 Jun 2026 10:17:38 +0000 Message-Id: <20260616101738.CF6891F00A3E@smtp.kernel.org> Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: New issues: - [Low] The fallback logic added to `i3c_master_attach_boardinfo` for match= ing devices without a PID is completely unreachable dead code. Pre-existing issues: - [High] Dangling pointer in `i3c_master_register_new_i3c_devs()` error pat= h leads to Use-After-Free and Double-Free. -- commit 02ce08803703bc5626ea5224b66caedd628224e4 Author: Akhil R i3c: master: Add support for devices without PID =20 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 557332d932576..bcc9c2d29c342 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c > @@ -1963,8 +1963,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, > fwnode_handle_get(desc->boardinfo->fwnode)); > =20 > 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); > } [Severity: High] This is a pre-existing issue, but does this error path leave a dangling pointer that can cause memory corruption? If device_register() fails, put_device() drops the reference and frees desc->dev. However, desc->dev is not set to NULL. When the I3C master later unregisters, i3c_master_unregister_i3c_devs() iterates through the bus devices. Since the pointer is left dangling, it passes the if (!i3cdev->dev) check, leading to write-after-free when setting i3cdev->dev->desc =3D NULL, followed by a double-free when calling put_device() again. Should desc->dev be set to NULL after calling put_device() here? [ ... ] > @@ -2357,8 +2366,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: Low] Is this else block reachable? Looking at i3c_master_add_i3c_boardinfo(), it requires a valid PID for all non-SETAASA devices. Since SETAASA devices bypass i3c_master_attach_boardinfo() entirely as they are attached early via i3c_master_early_i3c_dev_add(), wouldn't i3cboardinfo->pid be strictly non-zero for any device reaching this function? Additionally, for dynamically discovered devices, wouldn't i3cdev->info.static_addr be 0 prior to this call, causing i3cdev->info.static_addr !=3D i3cboardinfo->static_addr to always be true anyway? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260616095429.3947= 205-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 4A891CD98DA for ; Tue, 16 Jun 2026 10:17:41 +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=a/RtjM9Ch4b0imY98l86JuSNaIQYUe/OohPm63lkq+E=; b=ItRH4GloZQ1aO9 +vfx9HU/ixU1Izf7EPQE54XeIb8wBJz85szlzqCWQUXT7NwSXnyO350VZQdj8WU144SpjKUUKpBrT yATyZuyaswZgbcuN1T7mNOKS6TVa1ygN8bJfgNspDoToEbqRLy9qOx2x8sTAzX240JNHsrXuE3bNy U/VNbpkqGaQE47Pwju+4DL0SPdHBt8neRcS/P3rX0fWph53xpbG9DQFNuBEyRJ5EBl+yY9NFGNq3F +DTZ1jRiqDsofjgU6WKGjb9yP6Cn7rGQ0yD/gPY2Iz0vaoCKD2D8VGbwBo5Bzh+CEM03h8lzg+UNa DyYqc/whklTz2VK/G9QQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wZQrV-0000000FbHU-0BQw; Tue, 16 Jun 2026 10:17:41 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wZQrT-0000000FbHL-27ok for linux-i3c@lists.infradead.org; Tue, 16 Jun 2026 10:17:39 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 47D6940E4C; Tue, 16 Jun 2026 10:17:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF6891F00A3E; Tue, 16 Jun 2026 10:17:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1781605059; bh=m9fvRfvFkE7880z8gjqTj4HICoZgZjnRQdAV/h+A+Oc=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=g26xIRdjQcF/oS9JPexpO07kEyekl4nXTm2DcEgU7vX6poYAZmj6kMwYMUUGgk2dD lDi7smwhf7a6FRNocUdDiCG3rWVDMUZEd+89FCEbOCKD0ykUMuOPKt2UZmED5y7LHf 52UO4ecWMey2fQHUDvWOne3G/dlB/dM3S1czCAothPKV5QOx9sIWGGHF5P1ar6MGCe B4dOIaZxN2ZvdkPQbdYqmoPEZUh+jnFGhygVQoMA1W2p7t9bHAdhGrtkf8lBLaISII 8pVYFpjbB8ej4RbxsPuIZMXfAeC73FsIRF+PoxqCP0/q1jLEdwqeAJcPM7pkmqDfq6 i/2M4D9ZF9Iwg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 05/12] i3c: master: Add support for devices without PID To: "Akhil R" Cc: linux-i3c@lists.infradead.org, conor+dt@kernel.org, robh@kernel.org, linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org, Frank.Li@kernel.org In-Reply-To: <20260616095429.3947205-6-akhilrajeev@nvidia.com> References: <20260616095429.3947205-6-akhilrajeev@nvidia.com> Date: Tue, 16 Jun 2026 10:17:38 +0000 Message-Id: <20260616101738.CF6891F00A3E@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 MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtMb3ddIFRo ZSBmYWxsYmFjayBsb2dpYyBhZGRlZCB0byBgaTNjX21hc3Rlcl9hdHRhY2hfYm9hcmRpbmZvYCBm b3IgbWF0Y2hpbmcgZGV2aWNlcyB3aXRob3V0IGEgUElEIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFi bGUgZGVhZCBjb2RlLgoKUHJlLWV4aXN0aW5nIGlzc3VlczoKLSBbSGlnaF0gRGFuZ2xpbmcgcG9p bnRlciBpbiBgaTNjX21hc3Rlcl9yZWdpc3Rlcl9uZXdfaTNjX2RldnMoKWAgZXJyb3IgcGF0aCBs ZWFkcyB0byBVc2UtQWZ0ZXItRnJlZSBhbmQgRG91YmxlLUZyZWUuCi0tCgpjb21taXQgMDJjZTA4 ODAzNzAzYmM1NjI2ZWE1MjI0YjY2Y2FlZGQ2MjgyMjRlNApBdXRob3I6IEFraGlsIFIgPGFraGls cmFqZWV2QG52aWRpYS5jb20+CgppM2M6IG1hc3RlcjogQWRkIHN1cHBvcnQgZm9yIGRldmljZXMg d2l0aG91dCBQSUQKICAgIApEZXZpY2VzIHVzaW5nIFNFVEFBU0EgZm9yIGFkZHJlc3MgYXNzaWdu bWVudCBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUKYSA0OC1iaXQgUElEIGFjY29yZGluZyB0byB0 aGUgSTNDIHNwZWNpZmljYXRpb24uIEFsbG93IHN1Y2ggZGV2aWNlcyB0bwpyZWdpc3RlciBhbmQg dXNlIHRoZSBzdGF0aWMgYWRkcmVzcyB3aGVyZSBQSUQgd2FzIHJlcXVpcmVkLgoKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9pM2MvbWFzdGVyLmMgYi9kcml2ZXJzL2kzYy9tYXN0ZXIuYwo+IGluZGV4 IDU1NzMzMmQ5MzI1NzYuLmJjYzljMmQyOWMzNDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pM2Mv bWFzdGVyLmMKPiArKysgYi9kcml2ZXJzL2kzYy9tYXN0ZXIuYwo+IEBAIC0xOTYzLDggKzE5NjMs MTcgQEAgaTNjX21hc3Rlcl9yZWdpc3Rlcl9uZXdfaTNjX2RldnMoc3RydWN0IGkzY19tYXN0ZXJf Y29udHJvbGxlciAqbWFzdGVyKQo+ICAJCWRlc2MtPmRldi0+ZGV2LnR5cGUgPSAmaTNjX2Rldmlj ZV90eXBlOwo+ICAJCWRlc2MtPmRldi0+ZGV2LmJ1cyA9ICZpM2NfYnVzX3R5cGU7Cj4gIAkJZGVz Yy0+ZGV2LT5kZXYucmVsZWFzZSA9IGkzY19kZXZpY2VfcmVsZWFzZTsKPiAtCQlkZXZfc2V0X25h bWUoJmRlc2MtPmRldi0+ZGV2LCAiJWQtJWxseCIsIG1hc3Rlci0+YnVzLmlkLAo+IC0JCQkgICAg IGRlc2MtPmluZm8ucGlkKTsKPiArCj4gKwkJLyoKPiArCQkgKiBGb3IgZGV2aWNlcyB3aXRob3V0 IFBJRCAoZS5nLiwgU0VUQUFTQSBkZXZpY2VzKSwgdXNlCj4gKwkJICogc3RhdGljIGFkZHJlc3Mg Zm9yIG5hbWluZyBpbnN0ZWFkLgo+ICsJCSAqLwo+ICsJCWlmIChkZXNjLT5pbmZvLnBpZCkKPiAr CQkJZGV2X3NldF9uYW1lKCZkZXNjLT5kZXYtPmRldiwgIiVkLSVsbHgiLCBtYXN0ZXItPmJ1cy5p ZCwKPiArCQkJCSAgICAgZGVzYy0+aW5mby5waWQpOwo+ICsJCWVsc2UKPiArCQkJZGV2X3NldF9u YW1lKCZkZXNjLT5kZXYtPmRldiwgIiVkLSUwMngiLCBtYXN0ZXItPmJ1cy5pZCwKPiArCQkJCSAg ICAgZGVzYy0+aW5mby5zdGF0aWNfYWRkcik7Cj4gIAo+ICAJCWlmIChkZXNjLT5ib2FyZGluZm8p Cj4gIAkJCWRldmljZV9zZXRfbm9kZSgmZGVzYy0+ZGV2LT5kZXYsCj4gIAkJCQkJZndub2RlX2hh bmRsZV9nZXQoZGVzYy0+Ym9hcmRpbmZvLT5md25vZGUpKTsKPiAgCj4gIAkJcmV0ID0gZGV2aWNl X3JlZ2lzdGVyKCZkZXNjLT5kZXYtPmRldik7Cj4gIAkJaWYgKHJldCkgewo+ICAJCQlkZXZfZXJy KCZtYXN0ZXItPmRldiwKPiAgCQkJCSJGYWlsZWQgdG8gYWRkIEkzQyBkZXZpY2UgKGVyciA9ICVk KVxuIiwgcmV0KTsKPiAgCQkJcHV0X2RldmljZSgmZGVzYy0+ZGV2LT5kZXYpOwo+ICAJCX0KCltT ZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGRvZXMgdGhp cyBlcnJvciBwYXRoIGxlYXZlIGEgZGFuZ2xpbmcKcG9pbnRlciB0aGF0IGNhbiBjYXVzZSBtZW1v cnkgY29ycnVwdGlvbj8KCklmIGRldmljZV9yZWdpc3RlcigpIGZhaWxzLCBwdXRfZGV2aWNlKCkg ZHJvcHMgdGhlIHJlZmVyZW5jZSBhbmQgZnJlZXMKZGVzYy0+ZGV2LiBIb3dldmVyLCBkZXNjLT5k ZXYgaXMgbm90IHNldCB0byBOVUxMLgoKV2hlbiB0aGUgSTNDIG1hc3RlciBsYXRlciB1bnJlZ2lz dGVycywgaTNjX21hc3Rlcl91bnJlZ2lzdGVyX2kzY19kZXZzKCkKaXRlcmF0ZXMgdGhyb3VnaCB0 aGUgYnVzIGRldmljZXMuIFNpbmNlIHRoZSBwb2ludGVyIGlzIGxlZnQgZGFuZ2xpbmcsIGl0CnBh c3NlcyB0aGUgaWYgKCFpM2NkZXYtPmRldikgY2hlY2ssIGxlYWRpbmcgdG8gd3JpdGUtYWZ0ZXIt ZnJlZSB3aGVuCnNldHRpbmcgaTNjZGV2LT5kZXYtPmRlc2MgPSBOVUxMLCBmb2xsb3dlZCBieSBh IGRvdWJsZS1mcmVlIHdoZW4gY2FsbGluZwpwdXRfZGV2aWNlKCkgYWdhaW4uCgpTaG91bGQgZGVz Yy0+ZGV2IGJlIHNldCB0byBOVUxMIGFmdGVyIGNhbGxpbmcgcHV0X2RldmljZSgpIGhlcmU/Cgpb IC4uLiBdCgo+IEBAIC0yMzU3LDggKzIzNjYsMTggQEAgc3RhdGljIHZvaWQgaTNjX21hc3Rlcl9h dHRhY2hfYm9hcmRpbmZvKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmkzY2RldikKPiAgCXN0cnVjdCBp M2NfZGV2X2JvYXJkaW5mbyAqaTNjYm9hcmRpbmZvOwo+ICAKPiAgCWxpc3RfZm9yX2VhY2hfZW50 cnkoaTNjYm9hcmRpbmZvLCAmbWFzdGVyLT5ib2FyZGluZm8uaTNjLCBub2RlKSB7Cj4gLQkJaWYg KGkzY2Rldi0+aW5mby5waWQgIT0gaTNjYm9hcmRpbmZvLT5waWQpCj4gLQkJCWNvbnRpbnVlOwo+ ICsJCS8qCj4gKwkJICogRm9yIGRldmljZXMgd2l0aG91dCBQSUQgKGUuZy4sIFNFVEFBU0EgZGV2 aWNlcyksIG1hdGNoIGJ5Cj4gKwkJICogc3RhdGljIGFkZHJlc3MuIEZvciBkZXZpY2VzIHdpdGgg UElELCBtYXRjaCBieSBQSUQuCj4gKwkJICovCj4gKwkJaWYgKGkzY2JvYXJkaW5mby0+cGlkKSB7 Cj4gKwkJCWlmIChpM2NkZXYtPmluZm8ucGlkICE9IGkzY2JvYXJkaW5mby0+cGlkKQo+ICsJCQkJ Y29udGludWU7Cj4gKwkJfSBlbHNlIHsKPiArCQkJaWYgKCFpM2Nib2FyZGluZm8tPnN0YXRpY19h ZGRyIHx8Cj4gKwkJCSAgICBpM2NkZXYtPmluZm8uc3RhdGljX2FkZHIgIT0gaTNjYm9hcmRpbmZv LT5zdGF0aWNfYWRkcikKPiArCQkJCWNvbnRpbnVlOwo+ICsJCX0KCltTZXZlcml0eTogTG93XQpJ cyB0aGlzIGVsc2UgYmxvY2sgcmVhY2hhYmxlPwoKTG9va2luZyBhdCBpM2NfbWFzdGVyX2FkZF9p M2NfYm9hcmRpbmZvKCksIGl0IHJlcXVpcmVzIGEgdmFsaWQgUElEIGZvciBhbGwKbm9uLVNFVEFB U0EgZGV2aWNlcy4gU2luY2UgU0VUQUFTQSBkZXZpY2VzIGJ5cGFzcwppM2NfbWFzdGVyX2F0dGFj aF9ib2FyZGluZm8oKSBlbnRpcmVseSBhcyB0aGV5IGFyZSBhdHRhY2hlZCBlYXJseSB2aWEKaTNj X21hc3Rlcl9lYXJseV9pM2NfZGV2X2FkZCgpLCB3b3VsZG4ndCBpM2Nib2FyZGluZm8tPnBpZCBi ZSBzdHJpY3RseQpub24temVybyBmb3IgYW55IGRldmljZSByZWFjaGluZyB0aGlzIGZ1bmN0aW9u PwoKQWRkaXRpb25hbGx5LCBmb3IgZHluYW1pY2FsbHkgZGlzY292ZXJlZCBkZXZpY2VzLCB3b3Vs ZG4ndAppM2NkZXYtPmluZm8uc3RhdGljX2FkZHIgYmUgMCBwcmlvciB0byB0aGlzIGNhbGwsIGNh dXNpbmcKaTNjZGV2LT5pbmZvLnN0YXRpY19hZGRyICE9IGkzY2JvYXJkaW5mby0+c3RhdGljX2Fk ZHIgdG8gYWx3YXlzIGJlIHRydWUKYW55d2F5PwoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0 dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDYxNjA5NTQyOS4zOTQ3MjA1LTEtYWto aWxyYWplZXZAbnZpZGlhLmNvbT9wYXJ0PTUKCi0tIApsaW51eC1pM2MgbWFpbGluZyBsaXN0Cmxp bnV4LWkzY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtaTNjCg==