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 4D44634EF0F for ; Tue, 14 Jul 2026 10:03:23 +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=1784023404; cv=none; b=ZzNQL561kuy6hjCB1yK/YJ+wm/Th9kh+8rn7S6A5au4JzQNQETHXT0t/dBlMCTctVkj4EN7Tf5hkSlT8TX+CcMZ6ZrhVl6mbD3DOOWpMeFB5kFTA+KQr2JCQffRV8HF6e+FM4anDiAaiRNhNraW9+v3chsTWjqgk3iJ5nVhA5jM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784023404; c=relaxed/simple; bh=Cjw6/xr9+zb4QpcMMDxy9dloxL9jues8MbkzwJ+qzLs=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=NgHmWeQUWWmO4/OoN+HPUnQgES9WLTgSjZRMEDTwBKe8DWHtJHiZD35cnULfgpvIDtURnx5tfzBX6UkO3V6FODgDcOxqt/qGTK+ldh+chgu0UJutGEn1UdTIEZXqIeRQIg7mqs27l6eI/j9ShsiSdzz+U8MybeeZOQGVU4pFrfU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Sum6BDxI; 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="Sum6BDxI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7F82A1F00A3A; Tue, 14 Jul 2026 10:03:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784023402; bh=3yM6X5ImRpI7LmJuL/Zfmy9fl8hjy0h3JuJHAr9Dqwo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Sum6BDxI9rWiHkFImL+HziN6jgk5hKvxTpL3KFCbfVemYkEcV0UD997Ds4kOwLFTn rpWQMe2Gfyqw8264t3/MDequID6+oL36AOxdxTLpCekDLZoVw/gOcHKT81224FAOqb 5R3FxrXp+X1foXPISxVNKn0FSmUU93ji8Rt3yfzIYbJ3lvLRSpbCidhFZJiHwCEq0/ cD8hTtt/mN8F8XIFPkoGjKueQ/23JwPfX2A/VFKwytRWi2LQR6qU3j3G5pgjThDvtS 17CbNxoiwCkhlmOrA3uDeZ5Ly+pcS88kUeSIUh4Q+d2x4DPoluWoVjai8xqZjDgw0V sN54ooq2RgDdQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v14 1/8] i3c: master: Add APIs for I3C hub support Reply-To: sashiko-reviews@lists.linux.dev To: "Lakshay Piplani" Cc: linux-i3c@lists.infradead.org, Frank.Li@kernel.org, "Alexandre Belloni" , robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260714092053.2461482-2-lakshay.piplani@nxp.com> References: <20260714092053.2461482-1-lakshay.piplani@nxp.com> <20260714092053.2461482-2-lakshay.piplani@nxp.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 14 Jul 2026 10:03:22 +0000 Message-Id: <20260714100322.7F82A1F00A3A@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] Asymmetrical cleanup in `i3c_master_direct_detach_i3c_dev_locked` = leaks resources for unaddressed devices. Pre-existing issues: - [High] IDR entry deletion on `i3c_bus_init` failure causes ID corruption = and sysfs collisions. - [High] Missing NULL check for `dev->boardinfo` in `i3c_master_get_i3c_add= rs` leads to kernel panic. -- --- Patch [1]: [PATCH v14 1/8] i3c: master: Add APIs for I3C hub support --- commit 1db519c7da22819d977429d77c0d05ba94daedf9 Author: Aman Kumar Pandey i3c: master: Add APIs for I3C hub support Add helpers for attaching and detaching I3C devices and CCC helpers to check CCC support and send CCC commands, address slot helpers to query and update I3C bus address slot state, registering virtual masters with an explicit firmware node, and exposing the bus maintenance lock helpers. > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > index f1be38a640ca1..3b1c342be2bc5 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c [ ... ] > @@ -1775,6 +1792,83 @@ static int i3c_master_attach_i3c_dev(struct i3c_ma= ster_controller *master, > return 0; > } > =20 > +/** > + * i3c_master_direct_attach_i3c_dev_locked() - Attach an I3C device to a= master > + * @master: I3C master controller to attach the device to > + * @dev: I3C device descriptor representing the device > + * > + * Attach an I3C device to its master controller after reserving the dev= ice > + * addresses on the bus. The device must belong to @master. > + * > + * The master device itself is not passed to the controller driver's > + * ->attach_i3c_dev() callback. > + * > + * Context: Caller must hold @master->bus.lock in write mode. > + * > + * Return: 0 on success, or a negative error code if address reservation= fails > + * or if the master controller driver's ->attach_i3c_dev() callback fail= s. > + */ > +int i3c_master_direct_attach_i3c_dev_locked(struct i3c_master_controller= *master, > + struct i3c_dev_desc *dev) > +{ > + int ret; > + > + if (WARN_ON(i3c_dev_get_master(dev) !=3D master)) > + return -EINVAL; > + > + ret =3D i3c_master_get_i3c_addrs(dev); [Severity: High] This is a pre-existing issue, but does exposing this new API introduce a potential NULL pointer dereference? If a caller manually constructs a virtual I3C device without an OF node where dev->boardinfo is NULL, but it has a static_addr, calling this function will invoke i3c_master_get_i3c_addrs(). Inside that function, if the static address slot is not free: i3c_master_get_i3c_addrs() { ... status =3D i3c_bus_get_addr_slot_status(&master->bus, dev->info.static_addr); if (status !=3D I3C_ADDR_SLOT_FREE && dev->info.static_addr !=3D dev->boardinfo->init_dyn_addr) return -EBUSY; ... } Could this dereference dev->boardinfo without checking if it is NULL, leadi= ng to a kernel panic? > + if (ret) > + return ret; > + > + /* Do not attach the master device itself. */ > + if (master->this !=3D dev && master->ops->attach_i3c_dev) { > + ret =3D master->ops->attach_i3c_dev(dev); [Severity: High] Could this cause an asymmetrical resource leak for unaddressed devices? The original i3c_master_attach_i3c_dev() function includes a check at the beginning to return early if the device has no static or dynamic address: if (!dev->info.static_addr && !dev->info.dyn_addr) return 0; This new attach function lacks that check, meaning it invokes the master controller's attach_i3c_dev() hook even for unaddressed devices. However, the new i3c_master_direct_detach_i3c_dev_locked() function explicitly skips detach for unaddressed devices: if (!dev->info.static_addr && !dev->info.dyn_addr) return; Will any resources allocated by the controller driver during the attach hook be permanently leaked when the device is detached? > + if (ret) { > + i3c_master_put_i3c_addrs(dev); > + return ret; > + } > + } > + return 0; > +} > +EXPORT_SYMBOL_GPL(i3c_master_direct_attach_i3c_dev_locked); [ ... ] > @@ -3195,34 +3342,31 @@ static int i3c_master_check_ops(const struct i3c_= master_controller_ops *ops) [ ... ] > +int i3c_master_register_fwnode(struct i3c_master_controller *master, > + struct device *parent, > + struct fwnode_handle *fwnode, > + const struct i3c_master_controller_ops *ops, > + bool secondary) > +{ > + unsigned long i2c_scl_rate =3D I3C_BUS_I2C_FM_PLUS_SCL_MAX_RATE; > + struct i3c_bus *i3cbus =3D i3c_master_get_bus(master); > + enum i3c_bus_mode mode =3D I3C_BUS_MODE_PURE; > + struct device_node *np =3D NULL; > + struct i2c_dev_boardinfo *i2cbi; > + int ret; [ ... ] > + ret =3D i3c_bus_init(i3cbus, master->dev.of_node); > + if (ret) > + goto err_put_dev; [Severity: High] This isn't a bug introduced by this patch, but does an error here cause global IDR corruption? If i3c_bus_init() fails during idr_alloc(), it returns an error with i3cbus->id still set to 0. Taking the err_put_dev path calls put_device() on master->dev, which invokes i3c_masterdev_release().=20 i3c_masterdev_release() unconditionally calls i3c_bus_cleanup(), which runs: i3c_bus_cleanup() { ... idr_remove(&i3c_bus_idr, i3cbus->id); ... } If i3cbus->id is uninitialized (0), does this mistakenly remove ID 0 from the global i3c_bus_idr? If a valid bus was already registered with ID 0, it seems it would lose its IDR entry, causing a subsequent bus registration to be assigned ID 0 again and triggering sysfs collisions (i3c-0). > + > + dev_set_name(&master->dev, "i3c-%d", i3cbus->id); > + > + ret =3D of_populate_i3c_bus(master); > + if (ret) > + goto err_put_dev; [ ... ] --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260714092053.2461= 482-1-lakshay.piplani@nxp.com?part=3D1 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 ACEDAC44507 for ; Tue, 14 Jul 2026 10:03:25 +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=7VHT4w6I2Gx9RuSP03At2J4szN8dT8blVaUC7alPops=; b=tKiczE8MJbLxWe jrGM74osf9bDdXbmv874SDYazcfnFUE8KZ3hZz29oXnZHeTdMobeETGcTd2slBPTfwC2IzdjMGTjR qY4Mr2jCmWrJEsLyZxonN5HY5Q/SNxnYJ/dP0BWwlZ7NCoCKGsGitkVWQiU3UoDW8GvqrFCvr2Xv4 BI0sOEuHFsqx8iFG/oK+iR2HerlklKddwaza1tDx6vuDalD2GvaBjQFhphbgdqLxuU6suuEMDNPaI c5LkuilLfpkuA2JrNSxM+dPWc31MKUm7202NnmuP8yfynM1DrcBuYquJX0+8bsxFblmudKVYCsoeT eIjyJJwSTrCAv0FqTrHA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wjZz3-0000000BWWN-1R54; Tue, 14 Jul 2026 10:03:25 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wjZz1-0000000BWVz-2i6Z for linux-i3c@lists.infradead.org; Tue, 14 Jul 2026 10:03:23 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 0C38E4179F; Tue, 14 Jul 2026 10:03:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7F82A1F00A3A; Tue, 14 Jul 2026 10:03:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784023402; bh=3yM6X5ImRpI7LmJuL/Zfmy9fl8hjy0h3JuJHAr9Dqwo=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Sum6BDxI9rWiHkFImL+HziN6jgk5hKvxTpL3KFCbfVemYkEcV0UD997Ds4kOwLFTn rpWQMe2Gfyqw8264t3/MDequID6+oL36AOxdxTLpCekDLZoVw/gOcHKT81224FAOqb 5R3FxrXp+X1foXPISxVNKn0FSmUU93ji8Rt3yfzIYbJ3lvLRSpbCidhFZJiHwCEq0/ cD8hTtt/mN8F8XIFPkoGjKueQ/23JwPfX2A/VFKwytRWi2LQR6qU3j3G5pgjThDvtS 17CbNxoiwCkhlmOrA3uDeZ5Ly+pcS88kUeSIUh4Q+d2x4DPoluWoVjai8xqZjDgw0V sN54ooq2RgDdQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v14 1/8] i3c: master: Add APIs for I3C hub support To: "Lakshay Piplani" Cc: linux-i3c@lists.infradead.org, Frank.Li@kernel.org, "Alexandre Belloni" , robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260714092053.2461482-2-lakshay.piplani@nxp.com> References: <20260714092053.2461482-1-lakshay.piplani@nxp.com> <20260714092053.2461482-2-lakshay.piplani@nxp.com> Date: Tue, 14 Jul 2026 10:03:22 +0000 Message-Id: <20260714100322.7F82A1F00A3A@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 MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBB c3ltbWV0cmljYWwgY2xlYW51cCBpbiBgaTNjX21hc3Rlcl9kaXJlY3RfZGV0YWNoX2kzY19kZXZf bG9ja2VkYCBsZWFrcyByZXNvdXJjZXMgZm9yIHVuYWRkcmVzc2VkIGRldmljZXMuCgpQcmUtZXhp c3RpbmcgaXNzdWVzOgotIFtIaWdoXSBJRFIgZW50cnkgZGVsZXRpb24gb24gYGkzY19idXNfaW5p dGAgZmFpbHVyZSBjYXVzZXMgSUQgY29ycnVwdGlvbiBhbmQgc3lzZnMgY29sbGlzaW9ucy4KLSBb SGlnaF0gTWlzc2luZyBOVUxMIGNoZWNrIGZvciBgZGV2LT5ib2FyZGluZm9gIGluIGBpM2NfbWFz dGVyX2dldF9pM2NfYWRkcnNgIGxlYWRzIHRvIGtlcm5lbCBwYW5pYy4KLS0KCi0tLSBQYXRjaCBb MV06IFtQQVRDSCB2MTQgMS84XSBpM2M6IG1hc3RlcjogQWRkIEFQSXMgZm9yIEkzQyBodWIgc3Vw cG9ydCAtLS0KY29tbWl0IDFkYjUxOWM3ZGEyMjgxOWQ5Nzc0MjlkNzdjMGQwNWJhOTRkYWVkZjkK QXV0aG9yOiBBbWFuIEt1bWFyIFBhbmRleSA8YW1hbi5rdW1hcnBhbmRleUBueHAuY29tPgoKaTNj OiBtYXN0ZXI6IEFkZCBBUElzIGZvciBJM0MgaHViIHN1cHBvcnQKCkFkZCBoZWxwZXJzIGZvciBh dHRhY2hpbmcgYW5kIGRldGFjaGluZyBJM0MgZGV2aWNlcyBhbmQgQ0NDIGhlbHBlcnMKdG8gY2hl Y2sgQ0NDIHN1cHBvcnQgYW5kIHNlbmQgQ0NDIGNvbW1hbmRzLCBhZGRyZXNzIHNsb3QgaGVscGVy cyB0bwpxdWVyeSBhbmQgdXBkYXRlIEkzQyBidXMgYWRkcmVzcyBzbG90IHN0YXRlLCByZWdpc3Rl cmluZyB2aXJ0dWFsCm1hc3RlcnMgd2l0aCBhbiBleHBsaWNpdCBmaXJtd2FyZSBub2RlLCBhbmQg ZXhwb3NpbmcgdGhlIGJ1cyBtYWludGVuYW5jZQpsb2NrIGhlbHBlcnMuCgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2kzYy9tYXN0ZXIuYyBiL2RyaXZlcnMvaTNjL21hc3Rlci5jCj4gaW5kZXggZjFi ZTM4YTY0MGNhMS4uM2IxYzM0MmJlMmJjNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2kzYy9tYXN0 ZXIuYwo+ICsrKyBiL2RyaXZlcnMvaTNjL21hc3Rlci5jCgpbIC4uLiBdCgo+IEBAIC0xNzc1LDYg KzE3OTIsODMgQEAgc3RhdGljIGludCBpM2NfbWFzdGVyX2F0dGFjaF9pM2NfZGV2KHN0cnVjdCBp M2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlciwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICsv KioKPiArICogaTNjX21hc3Rlcl9kaXJlY3RfYXR0YWNoX2kzY19kZXZfbG9ja2VkKCkgLSBBdHRh Y2ggYW4gSTNDIGRldmljZSB0byBhIG1hc3Rlcgo+ICsgKiBAbWFzdGVyOiBJM0MgbWFzdGVyIGNv bnRyb2xsZXIgdG8gYXR0YWNoIHRoZSBkZXZpY2UgdG8KPiArICogQGRldjogSTNDIGRldmljZSBk ZXNjcmlwdG9yIHJlcHJlc2VudGluZyB0aGUgZGV2aWNlCj4gKyAqCj4gKyAqIEF0dGFjaCBhbiBJ M0MgZGV2aWNlIHRvIGl0cyBtYXN0ZXIgY29udHJvbGxlciBhZnRlciByZXNlcnZpbmcgdGhlIGRl dmljZQo+ICsgKiBhZGRyZXNzZXMgb24gdGhlIGJ1cy4gVGhlIGRldmljZSBtdXN0IGJlbG9uZyB0 byBAbWFzdGVyLgo+ICsgKgo+ICsgKiBUaGUgbWFzdGVyIGRldmljZSBpdHNlbGYgaXMgbm90IHBh c3NlZCB0byB0aGUgY29udHJvbGxlciBkcml2ZXIncwo+ICsgKiAtPmF0dGFjaF9pM2NfZGV2KCkg Y2FsbGJhY2suCj4gKyAqCj4gKyAqIENvbnRleHQ6IENhbGxlciBtdXN0IGhvbGQgQG1hc3Rlci0+ YnVzLmxvY2sgaW4gd3JpdGUgbW9kZS4KPiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3Ms IG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBhZGRyZXNzIHJlc2VydmF0aW9uIGZhaWxzCj4g KyAqIG9yIGlmIHRoZSBtYXN0ZXIgY29udHJvbGxlciBkcml2ZXIncyAtPmF0dGFjaF9pM2NfZGV2 KCkgY2FsbGJhY2sgZmFpbHMuCj4gKyAqLwo+ICtpbnQgaTNjX21hc3Rlcl9kaXJlY3RfYXR0YWNo X2kzY19kZXZfbG9ja2VkKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlciwKPiAr CQkJCQkgICAgc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCWlmIChXQVJOX09OKGkzY19kZXZfZ2V0X21hc3RlcihkZXYpICE9IG1hc3RlcikpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmV0ID0gaTNjX21hc3Rlcl9nZXRfaTNjX2FkZHJzKGRl dik7CgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMgYSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1dCBk b2VzIGV4cG9zaW5nIHRoaXMgbmV3IEFQSSBpbnRyb2R1Y2UgYQpwb3RlbnRpYWwgTlVMTCBwb2lu dGVyIGRlcmVmZXJlbmNlPwoKSWYgYSBjYWxsZXIgbWFudWFsbHkgY29uc3RydWN0cyBhIHZpcnR1 YWwgSTNDIGRldmljZSB3aXRob3V0IGFuIE9GIG5vZGUKd2hlcmUgZGV2LT5ib2FyZGluZm8gaXMg TlVMTCwgYnV0IGl0IGhhcyBhIHN0YXRpY19hZGRyLCBjYWxsaW5nIHRoaXMKZnVuY3Rpb24gd2ls bCBpbnZva2UgaTNjX21hc3Rlcl9nZXRfaTNjX2FkZHJzKCkuIEluc2lkZSB0aGF0IGZ1bmN0aW9u LAppZiB0aGUgc3RhdGljIGFkZHJlc3Mgc2xvdCBpcyBub3QgZnJlZToKCmkzY19tYXN0ZXJfZ2V0 X2kzY19hZGRycygpIHsKICAgIC4uLgogICAgc3RhdHVzID0gaTNjX2J1c19nZXRfYWRkcl9zbG90 X3N0YXR1cygmbWFzdGVyLT5idXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRldi0+aW5mby5zdGF0aWNfYWRkcik7CiAgICBpZiAoc3RhdHVzICE9IEkzQ19BRERS X1NMT1RfRlJFRSAmJgogICAgICAgIGRldi0+aW5mby5zdGF0aWNfYWRkciAhPSBkZXYtPmJvYXJk aW5mby0+aW5pdF9keW5fYWRkcikKICAgICAgICByZXR1cm4gLUVCVVNZOwogICAgLi4uCn0KCkNv dWxkIHRoaXMgZGVyZWZlcmVuY2UgZGV2LT5ib2FyZGluZm8gd2l0aG91dCBjaGVja2luZyBpZiBp dCBpcyBOVUxMLCBsZWFkaW5nCnRvIGEga2VybmVsIHBhbmljPwoKPiArCWlmIChyZXQpCj4gKwkJ cmV0dXJuIHJldDsKPiArCj4gKwkvKiBEbyBub3QgYXR0YWNoIHRoZSBtYXN0ZXIgZGV2aWNlIGl0 c2VsZi4gKi8KPiArCWlmIChtYXN0ZXItPnRoaXMgIT0gZGV2ICYmIG1hc3Rlci0+b3BzLT5hdHRh Y2hfaTNjX2Rldikgewo+ICsJCXJldCA9IG1hc3Rlci0+b3BzLT5hdHRhY2hfaTNjX2RldihkZXYp OwoKW1NldmVyaXR5OiBIaWdoXQpDb3VsZCB0aGlzIGNhdXNlIGFuIGFzeW1tZXRyaWNhbCByZXNv dXJjZSBsZWFrIGZvciB1bmFkZHJlc3NlZCBkZXZpY2VzPwoKVGhlIG9yaWdpbmFsIGkzY19tYXN0 ZXJfYXR0YWNoX2kzY19kZXYoKSBmdW5jdGlvbiBpbmNsdWRlcyBhIGNoZWNrIGF0IHRoZQpiZWdp bm5pbmcgdG8gcmV0dXJuIGVhcmx5IGlmIHRoZSBkZXZpY2UgaGFzIG5vIHN0YXRpYyBvciBkeW5h bWljIGFkZHJlc3M6CgppZiAoIWRldi0+aW5mby5zdGF0aWNfYWRkciAmJiAhZGV2LT5pbmZvLmR5 bl9hZGRyKQogICAgcmV0dXJuIDA7CgpUaGlzIG5ldyBhdHRhY2ggZnVuY3Rpb24gbGFja3MgdGhh dCBjaGVjaywgbWVhbmluZyBpdCBpbnZva2VzIHRoZSBtYXN0ZXIKY29udHJvbGxlcidzIGF0dGFj aF9pM2NfZGV2KCkgaG9vayBldmVuIGZvciB1bmFkZHJlc3NlZCBkZXZpY2VzLgoKSG93ZXZlciwg dGhlIG5ldyBpM2NfbWFzdGVyX2RpcmVjdF9kZXRhY2hfaTNjX2Rldl9sb2NrZWQoKSBmdW5jdGlv bgpleHBsaWNpdGx5IHNraXBzIGRldGFjaCBmb3IgdW5hZGRyZXNzZWQgZGV2aWNlczoKCmlmICgh ZGV2LT5pbmZvLnN0YXRpY19hZGRyICYmICFkZXYtPmluZm8uZHluX2FkZHIpCiAgICByZXR1cm47 CgpXaWxsIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSBjb250cm9sbGVyIGRyaXZlciBk dXJpbmcgdGhlIGF0dGFjaApob29rIGJlIHBlcm1hbmVudGx5IGxlYWtlZCB3aGVuIHRoZSBkZXZp Y2UgaXMgZGV0YWNoZWQ/Cgo+ICsJCWlmIChyZXQpIHsKPiArCQkJaTNjX21hc3Rlcl9wdXRfaTNj X2FkZHJzKGRldik7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTNjX21hc3Rlcl9kaXJlY3RfYXR0YWNoX2kzY19k ZXZfbG9ja2VkKTsKClsgLi4uIF0KCj4gQEAgLTMxOTUsMzQgKzMzNDIsMzEgQEAgc3RhdGljIGlu dCBpM2NfbWFzdGVyX2NoZWNrX29wcyhjb25zdCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVy X29wcyAqb3BzKQoKWyAuLi4gXQoKPiAraW50IGkzY19tYXN0ZXJfcmVnaXN0ZXJfZndub2RlKHN0 cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlciwKPiArCQkJICAgICAgIHN0cnVjdCBk ZXZpY2UgKnBhcmVudCwKPiArCQkJICAgICAgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUs Cj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyX29wcyAqb3Bz LAo+ICsJCQkgICAgICAgYm9vbCBzZWNvbmRhcnkpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgaTJj X3NjbF9yYXRlID0gSTNDX0JVU19JMkNfRk1fUExVU19TQ0xfTUFYX1JBVEU7Cj4gKwlzdHJ1Y3Qg aTNjX2J1cyAqaTNjYnVzID0gaTNjX21hc3Rlcl9nZXRfYnVzKG1hc3Rlcik7Cj4gKwllbnVtIGkz Y19idXNfbW9kZSBtb2RlID0gSTNDX0JVU19NT0RFX1BVUkU7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wID0gTlVMTDsKPiArCXN0cnVjdCBpMmNfZGV2X2JvYXJkaW5mbyAqaTJjYmk7Cj4gKwlp bnQgcmV0OwoKWyAuLi4gXQoKPiArCXJldCA9IGkzY19idXNfaW5pdChpM2NidXMsIG1hc3Rlci0+ ZGV2Lm9mX25vZGUpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9wdXRfZGV2OwoKW1NldmVy aXR5OiBIaWdoXQpUaGlzIGlzbid0IGEgYnVnIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCwgYnV0 IGRvZXMgYW4gZXJyb3IgaGVyZSBjYXVzZQpnbG9iYWwgSURSIGNvcnJ1cHRpb24/CgpJZiBpM2Nf YnVzX2luaXQoKSBmYWlscyBkdXJpbmcgaWRyX2FsbG9jKCksIGl0IHJldHVybnMgYW4gZXJyb3Ig d2l0aAppM2NidXMtPmlkIHN0aWxsIHNldCB0byAwLiBUYWtpbmcgdGhlIGVycl9wdXRfZGV2IHBh dGggY2FsbHMgcHV0X2RldmljZSgpIG9uCm1hc3Rlci0+ZGV2LCB3aGljaCBpbnZva2VzIGkzY19t YXN0ZXJkZXZfcmVsZWFzZSgpLiAKCmkzY19tYXN0ZXJkZXZfcmVsZWFzZSgpIHVuY29uZGl0aW9u YWxseSBjYWxscyBpM2NfYnVzX2NsZWFudXAoKSwgd2hpY2ggcnVuczoKCmkzY19idXNfY2xlYW51 cCgpIHsKICAgIC4uLgogICAgaWRyX3JlbW92ZSgmaTNjX2J1c19pZHIsIGkzY2J1cy0+aWQpOwog ICAgLi4uCn0KCklmIGkzY2J1cy0+aWQgaXMgdW5pbml0aWFsaXplZCAoMCksIGRvZXMgdGhpcyBt aXN0YWtlbmx5IHJlbW92ZSBJRCAwIGZyb20KdGhlIGdsb2JhbCBpM2NfYnVzX2lkcj8gSWYgYSB2 YWxpZCBidXMgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIElEIDAsIGl0CnNlZW1zIGl0IHdv dWxkIGxvc2UgaXRzIElEUiBlbnRyeSwgY2F1c2luZyBhIHN1YnNlcXVlbnQgYnVzIHJlZ2lzdHJh dGlvbiB0bwpiZSBhc3NpZ25lZCBJRCAwIGFnYWluIGFuZCB0cmlnZ2VyaW5nIHN5c2ZzIGNvbGxp c2lvbnMgKGkzYy0wKS4KCj4gKwo+ICsJZGV2X3NldF9uYW1lKCZtYXN0ZXItPmRldiwgImkzYy0l ZCIsIGkzY2J1cy0+aWQpOwo+ICsKPiArCXJldCA9IG9mX3BvcHVsYXRlX2kzY19idXMobWFzdGVy KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnJfcHV0X2RldjsKClsgLi4uIF0KCi0tIApTYXNo aWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA3MTQw OTIwNTMuMjQ2MTQ4Mi0xLWxha3NoYXkucGlwbGFuaUBueHAuY29tP3BhcnQ9MQoKLS0gCmxpbnV4 LWkzYyBtYWlsaW5nIGxpc3QKbGludXgtaTNjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1pM2MK