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 A323C606A32C for ; Sat, 7 Nov 2026 20:50:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=FzVbt8YC; dkim=fail reason="signature verification failed" (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=ahtQaV/8 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=op9s8MGLz1rGkI+R6yUqs5AW+I3TE35gXfSmUlQXmms=; b=FzVbt8YCqCnfde34wmpfZprjvo BTBoHjs46+jqzL9dusfqIzoBfN/P2Dk2i8vb42tCXRCtxfvGpGilvvzFHbqPTwxi6pSF8tFsUGFEl UFsQPYY6m0gN0BoJtH2G742Bt7EShlHTunJ73WShp7/QGQTLmHwF20qhkEGnGPYFDoIcKNlV3ND7H cBclUSCqcqjpM15ZH/1fIodXbU5nUNZ7nkK5vD0UpwiM1/+UxQSEfs+2IjPb/YNe35TCkq7qLdD2r iUFiwB9USiXvyR2QWNq2r+3criKpfeJa2OALpK030cgE4zR1Ij1xVN0tgyNZ/2UDYogcOlnVYKxE1 yarXU6/w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPnMp-0000000FP3X-1TOI; Sat, 07 Nov 2026 20:50:27 +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 1xPnMn-0000000FP3I-3YT2; Sat, 07 Nov 2026 20:50:25 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 368D54405D; Sat, 7 Nov 2026 20:50:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 358391F0089F; Sat, 7 Nov 2026 20:50:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794084625; bh=7UAUebb/g+Wp7CssiwXsKs5HhFn0ypoAy54XK/SwtQ8=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=ahtQaV/8F25RB4hf2Wvh8+n+4Mpn26NDPP7tsdhsAvP6XKMPxdCqySPAav9T9CFSd i/g8lGs5KFPN0qxPNst1OjFh1cCH3b04JTnUciBJlkf+W6pjonMQYSM2kkt/M4tluF rTEONKyS+fKzpzc9k7xabzQETIkPpoVMXhjyL77zCVI7/IRifAHhVpXaL2aN1kQHAY FoSs2cxlBq46ykefvIpaqO0+bPw+aSpln3BgaVcS0CXwty6NVegxRQSnNAWaEtRjut Wqfcks4OPawm1R46+cFQy64n5OvZmc8BAXM6AU6Pc1jzvKrs0cgIsd2hIjTItdJBkq Z5hOTZV5HSIEw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH 03/58] mtd: add opt-in lifetime ownership for backing objects To: "James Hilliard" , "Miquel Raynal" , "Richard Weinberger" , "Vignesh Raghavendra" , "Brian Norris" , "Boris Brezillon" , "Arseniy Krasnov" , "Chen-Yu Tsai" , "Jernej Skrabec" , "Samuel Holland" , "Thomas Gleixner" , "Vitaly Wool" , "David Woodhouse" , "Russell King" , "David Woodhouse" , "Mike Rapoport" , "Maxime Coquelin" , "Alexandre Torgue" , "Christophe Kerello" , "Jason Roberts" , "Michal Simek" , "Boris Brezillon" , "Mason Yang" , "Ramuthevar Vadivel Murugan" , "Stefan Agner" , "Lucas Stach" , "Thierry Reding" , "Jonathan Hunter" , "Dmitry Osipenko" , "Matthias Brugger" , "AngeloGioacchino Del Regno" , "Jorge Ramirez-Ortiz" , "Heiko Stuebner" , "Yifeng Zhao" , "Nicolas Ferre" , "Alexandre Belloni" , "Claudiu Beznea" , "Keguang Zhang" , "Jacky Huang" , "Shan-Chun Hung" , "Frank Li" , "Sascha Hauer" , "Pengutronix Kernel Team" , "Fabio Estevam" , "Han Xu" , "Liang Yang" , "Neil Armstrong" , "Kevin Hilman" , "Jerome Brunet" , "Martin Blumenstingl" , "Manivannan Sadhasivam" , "Kamal Dasu" , "Broadcom internal kernel review list" , "Vladimir Zapolskiy" , "Piotr Wojtaszczyk" , "Paul Cercueil" , "Harvey Hunt" , "Maxim Levitsky" , "Michael Walle" , "Srinivas Kandagatla" Cc: "Tze Yee Ng" , linux-mtd@lists.infradead.org, linux-sunxi@lists.linux.dev, imx@lists.linux.dev, linux-amlogic@lists.infradead.org, Frank.Li@kernel.org, wsa+renesas@sang-engineering.com In-Reply-To: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-3-0181ef0cc4c8@gmail.com> References: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-3-0181ef0cc4c8@gmail.com> Date: Sat, 07 Nov 2026 20:50:21 +0000 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion 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-mtd" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, 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 MyBwb3RlbnRpYWwKaXNzdWVzIHRvIGNvbnNpZGVyOgotIFtNZWRpdW1dIG10ZDogcmVmY291bnQg aW1iYWxhbmNlIGluIF9fcHV0X210ZF9kZXZpY2UoKSB3aGVuCiAgbWFzdGVyLT5kZXYudHlwZSBj aGFuZ2VzCi0gW01lZGl1bV0gbXRkOiBtdGRfYWRkX3BhcnRpdGlvbigpIGFsbG93cyBhZGRpbmcg cGFydGl0aW9ucyB0byBhbgogIHVucmVnaXN0ZXJlZCBtYXN0ZXIKLSBbTWVkaXVtXSBtdGQ6IGFk ZF9tdGRfZGV2aWNlKCkgbGVhdmVzIG10ZC0+ZGV2LnR5cGUgc2V0IHdoZW4KICBkZXZfc2V0X25h bWUoKSBmYWlscwpJdCBhbHNvIG5vdGljZWQgMSByZWxhdGVkIHByZS1leGlzdGluZyBpc3N1ZSB0 aGlzIHBhdGNoIGRvZXMgbm90CmludHJvZHVjZToKLSBbQ3JpdGljYWxdIG10ZDogY29yZTogdXNl LWFmdGVyLWZyZWUgaW4gYWRkX210ZF9kZXZpY2UoKSBbMV0KLS0KCmNvbW1pdCBkYTEyMzk0NTEx ZDQzODMzNWZiMjVjZTYwMTU2YzMzMDcxNjNlZDhmCkF1dGhvcjogSmFtZXMgSGlsbGlhcmQgPGph bWVzLmhpbGxpYXJkMUBnbWFpbC5jb20+CgptdGQ6IGFkZCBvcHQtaW4gbGlmZXRpbWUgb3duZXJz aGlwIGZvciBiYWNraW5nIG9iamVjdHMKClRoaXMgY29tbWl0IGludHJvZHVjZXMgb3B0LWluIHJl ZmVyZW5jZS1jb3VudGVkIGxpZmV0aW1lIG1hbmFnZW1lbnQgZm9yCm1hc3RlciBNVEQgYmFja2lu ZyBvYmplY3RzIHZpYSBtdGRfc2V0X3JlbGVhc2UoKSBhbmQgbXRkX3B1dF9tYXN0ZXIoKSwKcmV0 YWluaW5nIHRoZSBtYXN0ZXIgYW5kIHBhcnRpdGlvbiBoaWVyYXJjaHkgd2hpbGUgTVREIGhhbmRs ZXMsIGRldmljZQpub2Rlcywgb3IgT1RQIE5WTUVNIHByb3ZpZGVycyByZW1haW4gYWN0aXZlLgoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbXRkY29yZS5jIGIvZHJpdmVycy9tdGQvbXRkY29y ZS5jCj4gaW5kZXggNTU4YTYwNWJhNzQ5NS4uNDJjMDZhMDJjZDk5ZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL210ZC9tdGRjb3JlLmMKPiArKysgYi9kcml2ZXJzL210ZC9tdGRjb3JlLmMKWyAuLi4g XQo+IEBAIC03NDgsMTYgKzg0MCwyOCBAQCBpbnQgYWRkX210ZF9kZXZpY2Uoc3RydWN0IG10ZF9p bmZvICptdGQpClsgLi4uIF0KPiAgCW10ZC0+aW5kZXggPSBpOwo+ICAJa3JlZl9pbml0KCZtdGQt PnJlZmNudCk7Cj4gKwlpZiAobWFzdGVyLT5tYXN0ZXIucmVsZWFzZSkgewo+ICsJCW10ZF9nZXRf bGlmZXRpbWUobWFzdGVyKTsKPiArCQltdGQtPnJlZl9tYXN0ZXIgPSBtYXN0ZXI7Cj4gKwkJaWYg KG10ZC0+cGFyZW50ICYmIG10ZC0+cGFyZW50ICE9IG1hc3RlcikKPiArCQkJZ2V0X2RldmljZSgm bXRkLT5wYXJlbnQtPmRldik7Cj4gKwl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KQ2FuIGEgcGFydGl0 aW9uIHN0aWxsIGJlIGFkZGVkIHRocm91Z2ggbXRkX2FkZF9wYXJ0aXRpb24oKSBhZnRlciB0aGUK cGFyZW50IG9yIG1hc3RlciBoYXMgYmVlbiB1bnJlZ2lzdGVyZWQ/CgpJZiBhIHByb2Nlc3Mga2Vl cHMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gL2Rldi9tdGQwIGFjcm9zcyBkcml2ZXIKdW5i aW5kIChtdGRfZGV2aWNlX3VucmVnaXN0ZXIoKSBhbmQgbXRkX3B1dF9tYXN0ZXIoKSkgYW5kIGlz c3VlcwpCTEtQR19BRERfUEFSVElUSU9OLCBtdGRjaGFyX2Jsa3BnX2lvY3RsKCkgLT4gbXRkX2Fk ZF9wYXJ0aXRpb24oKSBjYWxscwphZGRfbXRkX2RldmljZShjaGlsZCkgd2l0aG91dCBjaGVja2lu ZyB3aGV0aGVyIHBhcmVudC0+cmVnaXN0ZXJlZCBpcyBzdGlsbAp0cnVlLiAgQmVjYXVzZSBkZWxf bXRkX3BhcnRpdGlvbnMoKSBoYXMgYWxyZWFkeSBydW4sIHRoZSBuZXcgcGFydGl0aW9uIGlzCm5l dmVyIGNsZWFuZWQgdXAsIGxlYWtpbmcgdGhlIHBhcnRpdGlvbiwgaXRzIE1URCBJRCwgVEhJU19N T0RVTEUsIGFuZAptYXN0ZXIubGlmZV9yZWZjbnQuICBGdXJ0aGVybW9yZSwgb25jZSB0aGUgb3Bl biBoYW5kbGUgb24gdGhlIG1hbmFnZWQKbWFzdGVyIGlzIGNsb3NlZCwgbXRkX2RldmljZV9yZWxl YXNlKCkgbGVhdmVzIG1hc3Rlci0+ZGV2LnR5cGUgc2V0LCBzbwpvcGVuaW5nIGFuZCBjbG9zaW5n IHRoZSBsZWFrZWQgY2hpbGQgcGFydGl0aW9uIHdpbGwgZG8ga3JlZl9nZXQoKSBvbiBhCnplcm8g bWFzdGVyLT5yZWZjbnQgYW5kIGNhbGwgbXRkX2RldmljZV9yZWxlYXNlKCkgYSBzZWNvbmQgdGlt ZS4KCj4gQEAgLTgzOSwyOSArOTQ2LDM4IEBAIGludCBhZGRfbXRkX2RldmljZShzdHJ1Y3QgbXRk X2luZm8gKm10ZCkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JLyogV2UgX2tub3dfIHdlIGFyZW4ndCBi ZWluZyByZW1vdmVkLCBiZWNhdXNlCj4gLQkgICBvdXIgY2FsbGVyIGlzIHN0aWxsIGhvbGRpbmcg dXMgaGVyZS4gU28gbm9uZQo+IC0JICAgb2YgdGhpcyB0cnlfIG5vbnNlbnNlLCBhbmQgbm8gYml0 Y2hpbmcgYWJvdXQgaXQKPiAtCSAgIGVpdGhlci4gOikgKi8KPiAtCV9fbW9kdWxlX2dldChUSElT X01PRFVMRSk7Cj4gIAlyZXR1cm4gMDsKPiAgCj4gIGZhaWxfbnZtZW1fYWRkOgo+ICAJZGV2aWNl X2RlbCgmbXRkLT5kZXYpOwo+ICBmYWlsX2FkZGVkOgo+ICAJLyoKPiAtCSAqIENsZWFyIHR5cGUg YW5kIHNldCBub3AgcmVsZWFzZSB0byBwcmV2ZW50IG10ZF9yZWxlYXNlKCkgLT4KPiArCSAqIENs ZWFyIHR5cGUgYW5kIG92ZXJyaWRlIHJlbGVhc2UgdG8gcHJldmVudCBtdGRfcmVsZWFzZSgpIC0+ Cj4gIAkgKiByZWxlYXNlX210ZF9wYXJ0aXRpb24oKSAtPiBmcmVlX3BhcnRpdGlvbigpIGZyb20g ZnJlZWluZyBtdGQuCj4gIAkgKiBUaGUgY2FsbGVyIGhhbmRsZXMgY2xlYW51cCBvbiBmYWlsdXJl Lgo+ICAJICovCj4gIAltdGQtPmRldi50eXBlID0gTlVMTDsKPiAtCW10ZC0+ZGV2LnJlbGVhc2Ug PSBtdGRfZGV2X3JlbGVhc2Vfbm9wOwo+ICsJbXRkLT5kZXYucmVsZWFzZSA9IG10ZF9kZXZfcmVs ZWFzZV9kb25lOwo+ICsJZGV2X3NldF9kcnZkYXRhKCZtdGQtPmRldiwgJnJlbGVhc2VkKTsKPiAr CXdhaXRfZm9yX3JlbGVhc2UgPSB0cnVlOwo+ICAJcHV0X2RldmljZSgmbXRkLT5kZXYpOwo+ICAJ b2Zfbm9kZV9wdXQobXRkX2dldF9vZl9ub2RlKG10ZCkpOwo+ICBmYWlsX2Rldm5hbWU6Cj4gIAlp ZHJfcmVtb3ZlKCZtdGRfaWRyLCBpKTsKPiArCWlkYV9mcmVlKCZtdGRfaWRzLCBpKTsKPiArCWlm IChtdGQtPnJlZl9tYXN0ZXIpIHsKPiArCQltdGQtPnJlZl9tYXN0ZXIgPSBOVUxMOwo+ICsJCWlm IChtdGQtPnBhcmVudCAmJiBtdGQtPnBhcmVudCAhPSBtYXN0ZXIpCj4gKwkJCXB1dF9kZXZpY2Uo Jm10ZC0+cGFyZW50LT5kZXYpOwo+ICsJCW10ZF9wdXRfbGlmZXRpbWUobWFzdGVyKTsKPiArCX0K CltTZXZlcml0eTogQ3JpdGljYWxdClRoaXMgcHJvYmxlbSB3YXNuJ3QgaW50cm9kdWNlZCBieSB0 aGlzIHBhdGNoLCBidXQgY2FuIGFkZF9tdGRfZGV2aWNlKCkKdHJpZ2dlciBhIHVzZS1hZnRlci1m cmVlIG9uIHRoZSBkZXZpY2Vfbm9kZSBbMV0gd2hlbgptdGRfY2hlY2tfb2Zfbm9kZSgpIG1hdGNo ZXMgYSBwYXJ0aXRpb24gbm9kZT8KCmRyaXZlcnMvbXRkL210ZGNvcmUuYzptdGRfY2hlY2tfb2Zf bm9kZSgpIHsKICAgIC4uLgoJCWlmIChwbGVuID09IG10ZF9uYW1lX2xlbiAmJgoJCSAgICAhc3Ry bmNtcChtdGQtPm5hbWUsIHBuYW1lICsgb2Zmc2V0LCBwbGVuKSkgewoJCQltdGRfc2V0X29mX25v ZGUobXRkLCBtdGRfZG4pOwoJCQlvZl9ub2RlX3B1dChtdGRfZG4pOwoJCQlicmVhazsKCQl9CiAg ICAuLi4KfQoKbXRkX2NoZWNrX29mX25vZGUoKSBzdG9yZXMgbXRkX2RuIGluIG10ZCBhbmQgaW1t ZWRpYXRlbHkgZHJvcHMgaXRzCnJlZmVyZW5jZSB2aWEgb2Zfbm9kZV9wdXQobXRkX2RuKSBiZWZv cmUgYWRkX210ZF9kZXZpY2UoKSBjYWxscwpvZl9ub2RlX2dldChtdGRfZ2V0X29mX25vZGUobXRk KSkuICBJbiBhIGR5bmFtaWMgRFQgZW52aXJvbm1lbnQsIGlmIHRoZQpub2RlIGlzIHJlbW92ZWQg aW4gdGhhdCB3aW5kb3csIG9mX25vZGVfcHV0KCkgZnJlZXMgbXRkX2RuIGFuZApvZl9ub2RlX2dl dCgpIGRlcmVmZXJlbmNlcyBmcmVlZCBtZW1vcnkuCgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyBq dW1waW5nIHRvIGZhaWxfZGV2bmFtZSB3aGVuIGRldl9zZXRfbmFtZSgpIGZhaWxzIGxlYXZlIG10 ZC0+ZGV2LnR5cGUKc2V0IHRvICZtdGRfZGV2dHlwZT8KCm10ZC0+ZGV2LnR5cGUgaXMgYXNzaWdu ZWQgcmlnaHQgYmVmb3JlIGRldl9zZXRfbmFtZSgpLCBhbmQgY2xlYXJpbmcgaXQgb25seQpoYXBw ZW5zIHVuZGVyIGZhaWxfYWRkZWQuICBMZWF2aW5nIG10ZC0+ZGV2LnR5cGUgbm9uLU5VTEwgY2F1 c2VzIGFueSByZXRyeQpvZiBhZGRfbXRkX2RldmljZSgpIHRvIGZhaWwgYXQgV0FSTl9PTkNFKG10 ZC0+ZGV2LnR5cGUsIC4uLiksIGFuZCBjYXVzZXMKX19wdXRfbXRkX2RldmljZSgpIG9uIGFuIG9w ZW4gcGFydGl0aW9uIHRvIGNhbGwga3JlZl9wdXQoJm1hc3Rlci0+cmVmY250LAptdGRfZGV2aWNl X3JlbGVhc2UpIG9uIGEgbWFzdGVyIHdob3NlIHN0cnVjdCBkZXZpY2Ugd2FzIG5ldmVyIHJlZ2lz dGVyZWQuCgpbIC4uLiBdCgo+IEBAIC0xMzQ4LDEzICsxNDg0LDE0IEBAIGludCBfX2dldF9tdGRf ZGV2aWNlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAJfQo+ ICAKPiArCW10ZF9nZXRfbGlmZXRpbWUobWFzdGVyKTsKPiAgCXdoaWxlIChtdGQpIHsKPiAgCQlp ZiAobXRkICE9IG1hc3RlcikKPiAgCQkJa3JlZl9nZXQoJm10ZC0+cmVmY250KTsKPiAgCQltdGQg PSBtdGQtPnBhcmVudDsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfTVREX1BB UlRJVElPTkVEX01BU1RFUikpCj4gKwlpZiAobWFzdGVyLT5kZXYudHlwZSkKPiAgCQlrcmVmX2dl dCgmbWFzdGVyLT5yZWZjbnQpOwo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC0xNDQxLDYgKzE1Nzgs NyBAQCB2b2lkIF9fcHV0X210ZF9kZXZpY2Uoc3RydWN0IG10ZF9pbmZvICptdGQpCj4gIAlzdHJ1 Y3QgbXRkX2luZm8gKm1hc3RlciA9IG10ZF9nZXRfbWFzdGVyKG10ZCk7Cj4gIAkvKiBtYXN0ZXIg Y2FuIGJlIGZyZWVkIGluIF9wdXRfZGV2aWNlICovCj4gIAlzdHJ1Y3QgbW9kdWxlICpvd25lciA9 IG1hc3Rlci0+b3duZXI7Cj4gKwlib29sIG1hbmFnZWQgPSBtYXN0ZXItPm1hc3Rlci5yZWxlYXNl Owo+ICAKPiAgCXdoaWxlIChtdGQpIHsKPiAgCQkvKiBrcmVmX3B1dCgpIGNhbiByZWxlc2UgbXRk LCBzbyBrZWVwIGEgcmVmZXJlbmNlIG10ZC0+cGFyZW50ICovCj4gQEAgLTE0NTEsMTIgKzE1ODks MTQgQEAgdm9pZCBfX3B1dF9tdGRfZGV2aWNlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQo+ICAJCW10 ZCA9IHBhcmVudDsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfTVREX1BBUlRJ VElPTkVEX01BU1RFUikpCj4gKwlpZiAobWFzdGVyLT5kZXYudHlwZSkKPiAgCQlrcmVmX3B1dCgm bWFzdGVyLT5yZWZjbnQsIG10ZF9kZXZpY2VfcmVsZWFzZSk7CgpbU2V2ZXJpdHk6IE1lZGl1bV0K Q2FuIG1hc3Rlci0+ZGV2LnR5cGUgY2hhbmdlIGZyb20gTlVMTCB0byBub24tTlVMTCBiZXR3ZWVu Cl9fZ2V0X210ZF9kZXZpY2UoKSBhbmQgX19wdXRfbXRkX2RldmljZSgpLCBjYXVzaW5nIGFuIHVu bWF0Y2hlZAprcmVmX3B1dCgmbWFzdGVyLT5yZWZjbnQsIG10ZF9kZXZpY2VfcmVsZWFzZSk/CgpX aGVuIENPTkZJR19NVERfUEFSVElUSU9ORURfTUFTVEVSPW4sIG1hc3Rlci0+ZGV2LnR5cGUgaXMg TlVMTCB3aGlsZQptdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKCkgcnVucyBwYXJzZV9tdGRfcGFy dGl0aW9ucygpLiAgSWYgYSBmaXJzdApwYXJ0aXRpb24gaXMgcmVnaXN0ZXJlZCBhbmQgb3BlbmVk IGJ5IGEgbm90aWZpZXIgb3IgdXNlcnNwYWNlIChzZWVpbmcKbWFzdGVyLT5kZXYudHlwZSA9PSBO VUxMIGluIF9fZ2V0X210ZF9kZXZpY2UoKSksIGFuZCBhIGxhdGVyIHBhcnRpdGlvbgpmYWlscyB0 byByZWdpc3RlciBpbiBhZGRfbXRkX3BhcnRpdGlvbnMoKSwgZGVsX210ZF9wYXJ0aXRpb25zKCkg dW5yZWdpc3RlcnMKdGhlIGZpcnN0IHBhcnRpdGlvbiB3aGlsZSBpdCByZW1haW5zIG9wZW46Cgpk cml2ZXJzL210ZC9tdGRjb3JlLmM6bXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpIHsKICAgIC4u LgoJcmV0ID0gcGFyc2VfbXRkX3BhcnRpdGlvbnMobXRkLCB0eXBlcywgcGFyc2VyX2RhdGEpOwoJ aWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKQoJCWdvdG8gb3V0OwoKCWlmIChyZXQgPiAwKQoJCXJl dCA9IDA7CgllbHNlIGlmIChucl9wYXJ0cykKCQlyZXQgPSBhZGRfbXRkX3BhcnRpdGlvbnMobXRk LCBwYXJ0cywgbnJfcGFydHMpOwoJZWxzZSBpZiAoIWRldmljZV9pc19yZWdpc3RlcmVkKCZtdGQt PmRldikpCgkJcmV0ID0gYWRkX210ZF9kZXZpY2UobXRkKTsKICAgIC4uLgp9CgpXaGVuIG5yX3Bh cnRzID09IDAgYW5kIHBhcnNlX210ZF9wYXJ0aXRpb25zKCkgcmV0dXJucyBhIG5vbi1kZWZlciBl cnJvciwKbXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpIGZhbGxzIGJhY2sgdG8gYWRkX210ZF9k ZXZpY2UobXRkKSwgd2hpY2ggc2V0cwptYXN0ZXItPmRldi50eXBlID0gJm10ZF9kZXZ0eXBlIGFu ZCBpbml0aWFsaXplcyBtYXN0ZXItPnJlZmNudCB0byAxLgpDbG9zaW5nIHRoZSBvcGVuIHBhcnRp dGlvbiBoYW5kbGUgdGhlbiBzZWVzIG1hc3Rlci0+ZGV2LnR5cGUgIT0gTlVMTCBpbgpfX3B1dF9t dGRfZGV2aWNlKCkgYW5kIGRyb3BzIG1hc3Rlci0+cmVmY250IHRvIDAgd2hpbGUgdGhlIG1hc3Rl ciBpcyBzdGlsbApyZWdpc3RlcmVkLgoKWzFdIGh0dHBzOi8vc2FzaGlrby5kZXYvIy9idWcvbGlu dXgtMTFmZGIzODMtMTMyZi00NzNiLTkyODQtMTAxYjQ3NTNmY2Q2CgotLSAKU2FzaGlrbyBBSSBy ZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYxMTA3LXN1Ym1pdC1y YXduYW5kLXJldGFpbmVkLWhhbmRsZS1saWZldGltZS12MS12MS0wLTAxODFlZjBjYzRjOEBnbWFp bC5jb20/cGFydD0zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= 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=1794084625; b=jah4DUOJW2TGIuehaqP354ChQCaOFR9xRIVd6gTNRlIcrNpIpWgIB5FqsntIfo2Mk8Pr QSvN9xrPGuIDkKpEv/8VYZiTiH95BrMy0yJZOXCkfidVW5eJ64hkcXUynQWQM42iCUvEW g9GK+NwL6f5/yOuSCJaIIRobtE60MBI0NLd61DByAzwK+ewbG3OIX6j3UCTvuxTJngDTI jmBsalgGCeYHQPlepXKfZ6GaDjMJdQIQn3+ab4kbgrJ66CnZVoa2wdgrM6PC3ojWW3fw+ c22aBg9CAHgSxH2LRMSi927q0SboeVTwQXn2Wanl/I6ytznIuyn825WDL7p02hREO/w== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794084625; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=7UAUebb/g+Wp7CssiwXsKs5HhFn0ypoAy54XK/SwtQ8=; b=pDxUrVaUnhdGbXDChPzLrhryXVx66p7bcQUVtYlGMoc7DukZIDOuzrbmDDjt2skHPtHk LWwJ3v7IfU0tbigfGWrKLnHbqo4/uB9HXfcBj/CKkqqwhU1a7kU4wBGj+CplwN4DVbaFF alFvEh3dPKPuQjMXow+R8ZXlxtHty2pf423IfDOTT11bDUx6FXg+x/KgyBCJy/9hgYnQd 0HAQ3NssqC0HY5zDOhRTpjNC6iH9xIkjyFiDv3WCdWnfT/uUGiXyuc4N+GaCoiYmIXEIS iI0zWFjI7Wn2WBLqwhrED5nuDZoA8YnnB8itrPTzC3m0GT0JEettSpAYOmktNkJtcsg== 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="ahtQaV/8"; 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 913B7606A32C; Sat, 7 Nov 2026 20:50:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=ahtQaV/8 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 358391F0089F; Sat, 7 Nov 2026 20:50:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794084625; bh=7UAUebb/g+Wp7CssiwXsKs5HhFn0ypoAy54XK/SwtQ8=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=ahtQaV/8F25RB4hf2Wvh8+n+4Mpn26NDPP7tsdhsAvP6XKMPxdCqySPAav9T9CFSd i/g8lGs5KFPN0qxPNst1OjFh1cCH3b04JTnUciBJlkf+W6pjonMQYSM2kkt/M4tluF rTEONKyS+fKzpzc9k7xabzQETIkPpoVMXhjyL77zCVI7/IRifAHhVpXaL2aN1kQHAY FoSs2cxlBq46ykefvIpaqO0+bPw+aSpln3BgaVcS0CXwty6NVegxRQSnNAWaEtRjut Wqfcks4OPawm1R46+cFQy64n5OvZmc8BAXM6AU6Pc1jzvKrs0cgIsd2hIjTItdJBkq Z5hOTZV5HSIEw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH 03/58] mtd: add opt-in lifetime ownership for backing objects Reply-To: sashiko-reviews@lists.linux.dev To: "James Hilliard" , "Miquel Raynal" , "Richard Weinberger" , "Vignesh Raghavendra" , "Brian Norris" , "Boris Brezillon" , "Arseniy Krasnov" , "Chen-Yu Tsai" , "Jernej Skrabec" , "Samuel Holland" , "Thomas Gleixner" , "Vitaly Wool" , "David Woodhouse" , "Russell King" , "David Woodhouse" , "Mike Rapoport" , "Maxime Coquelin" , "Alexandre Torgue" , "Christophe Kerello" , "Jason Roberts" , "Michal Simek" , "Boris Brezillon" , "Mason Yang" , "Ramuthevar Vadivel Murugan" , "Stefan Agner" , "Lucas Stach" , "Thierry Reding" , "Jonathan Hunter" , "Dmitry Osipenko" , "Matthias Brugger" , "AngeloGioacchino Del Regno" , "Jorge Ramirez-Ortiz" , "Heiko Stuebner" , "Yifeng Zhao" , "Nicolas Ferre" , "Alexandre Belloni" , "Claudiu Beznea" , "Keguang Zhang" , "Jacky Huang" , "Shan-Chun Hung" , "Frank Li" , "Sascha Hauer" , "Pengutronix Kernel Team" , "Fabio Estevam" , "Han Xu" , "Liang Yang" , "Neil Armstrong" , "Kevin Hilman" , "Jerome Brunet" , "Martin Blumenstingl" , "Manivannan Sadhasivam" , "Kamal Dasu" , "Broadcom internal kernel review list" , "Vladimir Zapolskiy" , "Piotr Wojtaszczyk" , "Paul Cercueil" , "Harvey Hunt" , "Maxim Levitsky" , "Michael Walle" , "Srinivas Kandagatla" Cc: "Tze Yee Ng" , linux-mtd@lists.infradead.org, linux-sunxi@lists.linux.dev, imx@lists.linux.dev, linux-amlogic@lists.infradead.org, Frank.Li@kernel.org, wsa+renesas@sang-engineering.com In-Reply-To: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-3-0181ef0cc4c8@gmail.com> References: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-3-0181ef0cc4c8@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sat, 07 Nov 2026 20:50:21 +0000 X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 3 potential issues to consider: - [Medium] mtd: refcount imbalance in __put_mtd_device() when master->dev.type changes - [Medium] mtd: mtd_add_partition() allows adding partitions to an unregistered master - [Medium] mtd: add_mtd_device() leaves mtd->dev.type set when dev_set_name() fails It also noticed 1 related pre-existing issue this patch does not introduce: - [Critical] mtd: core: use-after-free in add_mtd_device() [1] -- commit da12394511d438335fb25ce60156c3307163ed8f Author: James Hilliard mtd: add opt-in lifetime ownership for backing objects This commit introduces opt-in reference-counted lifetime management for master MTD backing objects via mtd_set_release() and mtd_put_master(), retaining the master and partition hierarchy while MTD handles, device nodes, or OTP NVMEM providers remain active. > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c > index 558a605ba7495..42c06a02cd99d 100644 > --- a/drivers/mtd/mtdcore.c > +++ b/drivers/mtd/mtdcore.c [ ... ] > @@ -748,16 +840,28 @@ int add_mtd_device(struct mtd_info *mtd) [ ... ] > mtd->index =3D i; > kref_init(&mtd->refcnt); > + if (master->master.release) { > + mtd_get_lifetime(master); > + mtd->ref_master =3D master; > + if (mtd->parent && mtd->parent !=3D master) > + get_device(&mtd->parent->dev); > + } [Severity: Medium] Can a partition still be added through mtd_add_partition() after the parent or master has been unregistered? If a process keeps an open file descriptor to /dev/mtd0 across driver unbind (mtd_device_unregister() and mtd_put_master()) and issues BLKPG_ADD_PARTITION, mtdchar_blkpg_ioctl() -> mtd_add_partition() calls add_mtd_device(child) without checking whether parent->registered is still true. Because del_mtd_partitions() has already run, the new partition is never cleaned up, leaking the partition, its MTD ID, THIS_MODULE, and master.life_refcnt. Furthermore, once the open handle on the managed master is closed, mtd_device_release() leaves master->dev.type set, so opening and closing the leaked child partition will do kref_get() on a zero master->refcnt and call mtd_device_release() a second time. > @@ -839,29 +946,38 @@ int add_mtd_device(struct mtd_info *mtd) > } > } > =20 > - /* We _know_ we aren't being removed, because > - our caller is still holding us here. So none > - of this try_ nonsense, and no bitching about it > - either. :) */ > - __module_get(THIS_MODULE); > return 0; > =20 > fail_nvmem_add: > device_del(&mtd->dev); > fail_added: > /* > - * Clear type and set nop release to prevent mtd_release() -> > + * Clear type and override release to prevent mtd_release() -> > * release_mtd_partition() -> free_partition() from freeing mtd. > * The caller handles cleanup on failure. > */ > mtd->dev.type =3D NULL; > - mtd->dev.release =3D mtd_dev_release_nop; > + mtd->dev.release =3D mtd_dev_release_done; > + dev_set_drvdata(&mtd->dev, &released); > + wait_for_release =3D true; > put_device(&mtd->dev); > of_node_put(mtd_get_of_node(mtd)); > fail_devname: > idr_remove(&mtd_idr, i); > + ida_free(&mtd_ids, i); > + if (mtd->ref_master) { > + mtd->ref_master =3D NULL; > + if (mtd->parent && mtd->parent !=3D master) > + put_device(&mtd->parent->dev); > + mtd_put_lifetime(master); > + } [Severity: Critical] This problem wasn't introduced by this patch, but can add_mtd_device() trigger a use-after-free on the device_node [1] when mtd_check_of_node() matches a partition node? drivers/mtd/mtdcore.c:mtd_check_of_node() { ... if (plen =3D=3D mtd_name_len && !strncmp(mtd->name, pname + offset, plen)) { mtd_set_of_node(mtd, mtd_dn); of_node_put(mtd_dn); break; } ... } mtd_check_of_node() stores mtd_dn in mtd and immediately drops its reference via of_node_put(mtd_dn) before add_mtd_device() calls of_node_get(mtd_get_of_node(mtd)). In a dynamic DT environment, if the node is removed in that window, of_node_put() frees mtd_dn and of_node_get() dereferences freed memory. [Severity: Medium] Does jumping to fail_devname when dev_set_name() fails leave mtd->dev.type set to &mtd_devtype? mtd->dev.type is assigned right before dev_set_name(), and clearing it only happens under fail_added. Leaving mtd->dev.type non-NULL causes any retry of add_mtd_device() to fail at WARN_ONCE(mtd->dev.type, ...), and causes __put_mtd_device() on an open partition to call kref_put(&master->refcnt, mtd_device_release) on a master whose struct device was never registered. [ ... ] > @@ -1348,13 +1484,14 @@ int __get_mtd_device(struct mtd_info *mtd) > return -ENODEV; > } > =20 > + mtd_get_lifetime(master); > while (mtd) { > if (mtd !=3D master) > kref_get(&mtd->refcnt); > mtd =3D mtd->parent; > } > =20 > - if (IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) > + if (master->dev.type) > kref_get(&master->refcnt); > =20 > return 0; > @@ -1441,6 +1578,7 @@ void __put_mtd_device(struct mtd_info *mtd) > struct mtd_info *master =3D mtd_get_master(mtd); > /* master can be freed in _put_device */ > struct module *owner =3D master->owner; > + bool managed =3D master->master.release; > =20 > while (mtd) { > /* kref_put() can relese mtd, so keep a reference mtd->parent */ > @@ -1451,12 +1589,14 @@ void __put_mtd_device(struct mtd_info *mtd) > mtd =3D parent; > } > =20 > - if (IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) > + if (master->dev.type) > kref_put(&master->refcnt, mtd_device_release); [Severity: Medium] Can master->dev.type change from NULL to non-NULL between __get_mtd_device() and __put_mtd_device(), causing an unmatched kref_put(&master->refcnt, mtd_device_release)? When CONFIG_MTD_PARTITIONED_MASTER=3Dn, master->dev.type is NULL while mtd_device_parse_register() runs parse_mtd_partitions(). If a first partition is registered and opened by a notifier or userspace (seeing master->dev.type =3D=3D NULL in __get_mtd_device()), and a later partition fails to register in add_mtd_partitions(), del_mtd_partitions() unregisters the first partition while it remains open: drivers/mtd/mtdcore.c:mtd_device_parse_register() { ... ret =3D parse_mtd_partitions(mtd, types, parser_data); if (ret =3D=3D -EPROBE_DEFER) goto out; if (ret > 0) ret =3D 0; else if (nr_parts) ret =3D add_mtd_partitions(mtd, parts, nr_parts); else if (!device_is_registered(&mtd->dev)) ret =3D add_mtd_device(mtd); ... } When nr_parts =3D=3D 0 and parse_mtd_partitions() returns a non-defer error, mtd_device_parse_register() falls back to add_mtd_device(mtd), which sets master->dev.type =3D &mtd_devtype and initializes master->refcnt to 1. Closing the open partition handle then sees master->dev.type !=3D NULL in __put_mtd_device() and drops master->refcnt to 0 while the master is still registered. [1] https://sashiko.dev/#/bug/linux-11fdb383-132f-473b-9284-101b4753fcd6 --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261107-submit-raw= nand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com?part=3D3 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 99C9A606A326 for ; Sat, 7 Nov 2026 20:50:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=HmNuQrgS; dkim=fail reason="signature verification failed" (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=ahtQaV/8 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=o9763RLUZpjl+MB3uikoQvTLFgkoLv2zgSO4e3/zSxU=; b=HmNuQrgSSuw2b9oTRVX2/1c4qp FzCb2S0awyiFBDk5fGYauoE4yPcHA1iGM1PAWdz9JeaZQQD3WuW9TMJZKRcwrvZK92YaLkLFhHvf7 y5BTrfTDQHzBoUaKw/G19z6h+kk/F66pZnpPqRn+iJcGtWhg+oA2U2FgCaHsFdZ7swztihZPFNFwU aLNSBJiRd4T3uobXfjnoLryy1j0LpI58PxxnyaL/YNUR/Tb/9KrEn1ANKej9192HCW99yTjkS18yJ T5sRx+NmZSlhin5BBTprL/VRwX37H05aT25eb/qx5rY0AcNmgT/xauZg9a3eYnAVCamy9mb/QP14/ rA/jI9eA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPnMp-0000000FP3T-0yXN; Sat, 07 Nov 2026 20:50:27 +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 1xPnMn-0000000FP3I-3YT2; Sat, 07 Nov 2026 20:50:25 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 368D54405D; Sat, 7 Nov 2026 20:50:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 358391F0089F; Sat, 7 Nov 2026 20:50:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794084625; bh=7UAUebb/g+Wp7CssiwXsKs5HhFn0ypoAy54XK/SwtQ8=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=ahtQaV/8F25RB4hf2Wvh8+n+4Mpn26NDPP7tsdhsAvP6XKMPxdCqySPAav9T9CFSd i/g8lGs5KFPN0qxPNst1OjFh1cCH3b04JTnUciBJlkf+W6pjonMQYSM2kkt/M4tluF rTEONKyS+fKzpzc9k7xabzQETIkPpoVMXhjyL77zCVI7/IRifAHhVpXaL2aN1kQHAY FoSs2cxlBq46ykefvIpaqO0+bPw+aSpln3BgaVcS0CXwty6NVegxRQSnNAWaEtRjut Wqfcks4OPawm1R46+cFQy64n5OvZmc8BAXM6AU6Pc1jzvKrs0cgIsd2hIjTItdJBkq Z5hOTZV5HSIEw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH 03/58] mtd: add opt-in lifetime ownership for backing objects To: "James Hilliard" , "Miquel Raynal" , "Richard Weinberger" , "Vignesh Raghavendra" , "Brian Norris" , "Boris Brezillon" , "Arseniy Krasnov" , "Chen-Yu Tsai" , "Jernej Skrabec" , "Samuel Holland" , "Thomas Gleixner" , "Vitaly Wool" , "David Woodhouse" , "Russell King" , "David Woodhouse" , "Mike Rapoport" , "Maxime Coquelin" , "Alexandre Torgue" , "Christophe Kerello" , "Jason Roberts" , "Michal Simek" , "Boris Brezillon" , "Mason Yang" , "Ramuthevar Vadivel Murugan" , "Stefan Agner" , "Lucas Stach" , "Thierry Reding" , "Jonathan Hunter" , "Dmitry Osipenko" , "Matthias Brugger" , "AngeloGioacchino Del Regno" , "Jorge Ramirez-Ortiz" , "Heiko Stuebner" , "Yifeng Zhao" , "Nicolas Ferre" , "Alexandre Belloni" , "Claudiu Beznea" , "Keguang Zhang" , "Jacky Huang" , "Shan-Chun Hung" , "Frank Li" , "Sascha Hauer" , "Pengutronix Kernel Team" , "Fabio Estevam" , "Han Xu" , "Liang Yang" , "Neil Armstrong" , "Kevin Hilman" , "Jerome Brunet" , "Martin Blumenstingl" , "Manivannan Sadhasivam" , "Kamal Dasu" , "Broadcom internal kernel review list" , "Vladimir Zapolskiy" , "Piotr Wojtaszczyk" , "Paul Cercueil" , "Harvey Hunt" , "Maxim Levitsky" , "Michael Walle" , "Srinivas Kandagatla" Cc: "Tze Yee Ng" , linux-mtd@lists.infradead.org, linux-sunxi@lists.linux.dev, imx@lists.linux.dev, linux-amlogic@lists.infradead.org, Frank.Li@kernel.org, wsa+renesas@sang-engineering.com In-Reply-To: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-3-0181ef0cc4c8@gmail.com> References: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-3-0181ef0cc4c8@gmail.com> Date: Sat, 07 Nov 2026 20:50:21 +0000 X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: 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-amlogic" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, 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 MyBwb3RlbnRpYWwKaXNzdWVzIHRvIGNvbnNpZGVyOgotIFtNZWRpdW1dIG10ZDogcmVmY291bnQg aW1iYWxhbmNlIGluIF9fcHV0X210ZF9kZXZpY2UoKSB3aGVuCiAgbWFzdGVyLT5kZXYudHlwZSBj aGFuZ2VzCi0gW01lZGl1bV0gbXRkOiBtdGRfYWRkX3BhcnRpdGlvbigpIGFsbG93cyBhZGRpbmcg cGFydGl0aW9ucyB0byBhbgogIHVucmVnaXN0ZXJlZCBtYXN0ZXIKLSBbTWVkaXVtXSBtdGQ6IGFk ZF9tdGRfZGV2aWNlKCkgbGVhdmVzIG10ZC0+ZGV2LnR5cGUgc2V0IHdoZW4KICBkZXZfc2V0X25h bWUoKSBmYWlscwpJdCBhbHNvIG5vdGljZWQgMSByZWxhdGVkIHByZS1leGlzdGluZyBpc3N1ZSB0 aGlzIHBhdGNoIGRvZXMgbm90CmludHJvZHVjZToKLSBbQ3JpdGljYWxdIG10ZDogY29yZTogdXNl LWFmdGVyLWZyZWUgaW4gYWRkX210ZF9kZXZpY2UoKSBbMV0KLS0KCmNvbW1pdCBkYTEyMzk0NTEx ZDQzODMzNWZiMjVjZTYwMTU2YzMzMDcxNjNlZDhmCkF1dGhvcjogSmFtZXMgSGlsbGlhcmQgPGph bWVzLmhpbGxpYXJkMUBnbWFpbC5jb20+CgptdGQ6IGFkZCBvcHQtaW4gbGlmZXRpbWUgb3duZXJz aGlwIGZvciBiYWNraW5nIG9iamVjdHMKClRoaXMgY29tbWl0IGludHJvZHVjZXMgb3B0LWluIHJl ZmVyZW5jZS1jb3VudGVkIGxpZmV0aW1lIG1hbmFnZW1lbnQgZm9yCm1hc3RlciBNVEQgYmFja2lu ZyBvYmplY3RzIHZpYSBtdGRfc2V0X3JlbGVhc2UoKSBhbmQgbXRkX3B1dF9tYXN0ZXIoKSwKcmV0 YWluaW5nIHRoZSBtYXN0ZXIgYW5kIHBhcnRpdGlvbiBoaWVyYXJjaHkgd2hpbGUgTVREIGhhbmRs ZXMsIGRldmljZQpub2Rlcywgb3IgT1RQIE5WTUVNIHByb3ZpZGVycyByZW1haW4gYWN0aXZlLgoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbXRkY29yZS5jIGIvZHJpdmVycy9tdGQvbXRkY29y ZS5jCj4gaW5kZXggNTU4YTYwNWJhNzQ5NS4uNDJjMDZhMDJjZDk5ZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL210ZC9tdGRjb3JlLmMKPiArKysgYi9kcml2ZXJzL210ZC9tdGRjb3JlLmMKWyAuLi4g XQo+IEBAIC03NDgsMTYgKzg0MCwyOCBAQCBpbnQgYWRkX210ZF9kZXZpY2Uoc3RydWN0IG10ZF9p bmZvICptdGQpClsgLi4uIF0KPiAgCW10ZC0+aW5kZXggPSBpOwo+ICAJa3JlZl9pbml0KCZtdGQt PnJlZmNudCk7Cj4gKwlpZiAobWFzdGVyLT5tYXN0ZXIucmVsZWFzZSkgewo+ICsJCW10ZF9nZXRf bGlmZXRpbWUobWFzdGVyKTsKPiArCQltdGQtPnJlZl9tYXN0ZXIgPSBtYXN0ZXI7Cj4gKwkJaWYg KG10ZC0+cGFyZW50ICYmIG10ZC0+cGFyZW50ICE9IG1hc3RlcikKPiArCQkJZ2V0X2RldmljZSgm bXRkLT5wYXJlbnQtPmRldik7Cj4gKwl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KQ2FuIGEgcGFydGl0 aW9uIHN0aWxsIGJlIGFkZGVkIHRocm91Z2ggbXRkX2FkZF9wYXJ0aXRpb24oKSBhZnRlciB0aGUK cGFyZW50IG9yIG1hc3RlciBoYXMgYmVlbiB1bnJlZ2lzdGVyZWQ/CgpJZiBhIHByb2Nlc3Mga2Vl cHMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gL2Rldi9tdGQwIGFjcm9zcyBkcml2ZXIKdW5i aW5kIChtdGRfZGV2aWNlX3VucmVnaXN0ZXIoKSBhbmQgbXRkX3B1dF9tYXN0ZXIoKSkgYW5kIGlz c3VlcwpCTEtQR19BRERfUEFSVElUSU9OLCBtdGRjaGFyX2Jsa3BnX2lvY3RsKCkgLT4gbXRkX2Fk ZF9wYXJ0aXRpb24oKSBjYWxscwphZGRfbXRkX2RldmljZShjaGlsZCkgd2l0aG91dCBjaGVja2lu ZyB3aGV0aGVyIHBhcmVudC0+cmVnaXN0ZXJlZCBpcyBzdGlsbAp0cnVlLiAgQmVjYXVzZSBkZWxf bXRkX3BhcnRpdGlvbnMoKSBoYXMgYWxyZWFkeSBydW4sIHRoZSBuZXcgcGFydGl0aW9uIGlzCm5l dmVyIGNsZWFuZWQgdXAsIGxlYWtpbmcgdGhlIHBhcnRpdGlvbiwgaXRzIE1URCBJRCwgVEhJU19N T0RVTEUsIGFuZAptYXN0ZXIubGlmZV9yZWZjbnQuICBGdXJ0aGVybW9yZSwgb25jZSB0aGUgb3Bl biBoYW5kbGUgb24gdGhlIG1hbmFnZWQKbWFzdGVyIGlzIGNsb3NlZCwgbXRkX2RldmljZV9yZWxl YXNlKCkgbGVhdmVzIG1hc3Rlci0+ZGV2LnR5cGUgc2V0LCBzbwpvcGVuaW5nIGFuZCBjbG9zaW5n IHRoZSBsZWFrZWQgY2hpbGQgcGFydGl0aW9uIHdpbGwgZG8ga3JlZl9nZXQoKSBvbiBhCnplcm8g bWFzdGVyLT5yZWZjbnQgYW5kIGNhbGwgbXRkX2RldmljZV9yZWxlYXNlKCkgYSBzZWNvbmQgdGlt ZS4KCj4gQEAgLTgzOSwyOSArOTQ2LDM4IEBAIGludCBhZGRfbXRkX2RldmljZShzdHJ1Y3QgbXRk X2luZm8gKm10ZCkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JLyogV2UgX2tub3dfIHdlIGFyZW4ndCBi ZWluZyByZW1vdmVkLCBiZWNhdXNlCj4gLQkgICBvdXIgY2FsbGVyIGlzIHN0aWxsIGhvbGRpbmcg dXMgaGVyZS4gU28gbm9uZQo+IC0JICAgb2YgdGhpcyB0cnlfIG5vbnNlbnNlLCBhbmQgbm8gYml0 Y2hpbmcgYWJvdXQgaXQKPiAtCSAgIGVpdGhlci4gOikgKi8KPiAtCV9fbW9kdWxlX2dldChUSElT X01PRFVMRSk7Cj4gIAlyZXR1cm4gMDsKPiAgCj4gIGZhaWxfbnZtZW1fYWRkOgo+ICAJZGV2aWNl X2RlbCgmbXRkLT5kZXYpOwo+ICBmYWlsX2FkZGVkOgo+ICAJLyoKPiAtCSAqIENsZWFyIHR5cGUg YW5kIHNldCBub3AgcmVsZWFzZSB0byBwcmV2ZW50IG10ZF9yZWxlYXNlKCkgLT4KPiArCSAqIENs ZWFyIHR5cGUgYW5kIG92ZXJyaWRlIHJlbGVhc2UgdG8gcHJldmVudCBtdGRfcmVsZWFzZSgpIC0+ Cj4gIAkgKiByZWxlYXNlX210ZF9wYXJ0aXRpb24oKSAtPiBmcmVlX3BhcnRpdGlvbigpIGZyb20g ZnJlZWluZyBtdGQuCj4gIAkgKiBUaGUgY2FsbGVyIGhhbmRsZXMgY2xlYW51cCBvbiBmYWlsdXJl Lgo+ICAJICovCj4gIAltdGQtPmRldi50eXBlID0gTlVMTDsKPiAtCW10ZC0+ZGV2LnJlbGVhc2Ug PSBtdGRfZGV2X3JlbGVhc2Vfbm9wOwo+ICsJbXRkLT5kZXYucmVsZWFzZSA9IG10ZF9kZXZfcmVs ZWFzZV9kb25lOwo+ICsJZGV2X3NldF9kcnZkYXRhKCZtdGQtPmRldiwgJnJlbGVhc2VkKTsKPiAr CXdhaXRfZm9yX3JlbGVhc2UgPSB0cnVlOwo+ICAJcHV0X2RldmljZSgmbXRkLT5kZXYpOwo+ICAJ b2Zfbm9kZV9wdXQobXRkX2dldF9vZl9ub2RlKG10ZCkpOwo+ICBmYWlsX2Rldm5hbWU6Cj4gIAlp ZHJfcmVtb3ZlKCZtdGRfaWRyLCBpKTsKPiArCWlkYV9mcmVlKCZtdGRfaWRzLCBpKTsKPiArCWlm IChtdGQtPnJlZl9tYXN0ZXIpIHsKPiArCQltdGQtPnJlZl9tYXN0ZXIgPSBOVUxMOwo+ICsJCWlm IChtdGQtPnBhcmVudCAmJiBtdGQtPnBhcmVudCAhPSBtYXN0ZXIpCj4gKwkJCXB1dF9kZXZpY2Uo Jm10ZC0+cGFyZW50LT5kZXYpOwo+ICsJCW10ZF9wdXRfbGlmZXRpbWUobWFzdGVyKTsKPiArCX0K CltTZXZlcml0eTogQ3JpdGljYWxdClRoaXMgcHJvYmxlbSB3YXNuJ3QgaW50cm9kdWNlZCBieSB0 aGlzIHBhdGNoLCBidXQgY2FuIGFkZF9tdGRfZGV2aWNlKCkKdHJpZ2dlciBhIHVzZS1hZnRlci1m cmVlIG9uIHRoZSBkZXZpY2Vfbm9kZSBbMV0gd2hlbgptdGRfY2hlY2tfb2Zfbm9kZSgpIG1hdGNo ZXMgYSBwYXJ0aXRpb24gbm9kZT8KCmRyaXZlcnMvbXRkL210ZGNvcmUuYzptdGRfY2hlY2tfb2Zf bm9kZSgpIHsKICAgIC4uLgoJCWlmIChwbGVuID09IG10ZF9uYW1lX2xlbiAmJgoJCSAgICAhc3Ry bmNtcChtdGQtPm5hbWUsIHBuYW1lICsgb2Zmc2V0LCBwbGVuKSkgewoJCQltdGRfc2V0X29mX25v ZGUobXRkLCBtdGRfZG4pOwoJCQlvZl9ub2RlX3B1dChtdGRfZG4pOwoJCQlicmVhazsKCQl9CiAg ICAuLi4KfQoKbXRkX2NoZWNrX29mX25vZGUoKSBzdG9yZXMgbXRkX2RuIGluIG10ZCBhbmQgaW1t ZWRpYXRlbHkgZHJvcHMgaXRzCnJlZmVyZW5jZSB2aWEgb2Zfbm9kZV9wdXQobXRkX2RuKSBiZWZv cmUgYWRkX210ZF9kZXZpY2UoKSBjYWxscwpvZl9ub2RlX2dldChtdGRfZ2V0X29mX25vZGUobXRk KSkuICBJbiBhIGR5bmFtaWMgRFQgZW52aXJvbm1lbnQsIGlmIHRoZQpub2RlIGlzIHJlbW92ZWQg aW4gdGhhdCB3aW5kb3csIG9mX25vZGVfcHV0KCkgZnJlZXMgbXRkX2RuIGFuZApvZl9ub2RlX2dl dCgpIGRlcmVmZXJlbmNlcyBmcmVlZCBtZW1vcnkuCgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyBq dW1waW5nIHRvIGZhaWxfZGV2bmFtZSB3aGVuIGRldl9zZXRfbmFtZSgpIGZhaWxzIGxlYXZlIG10 ZC0+ZGV2LnR5cGUKc2V0IHRvICZtdGRfZGV2dHlwZT8KCm10ZC0+ZGV2LnR5cGUgaXMgYXNzaWdu ZWQgcmlnaHQgYmVmb3JlIGRldl9zZXRfbmFtZSgpLCBhbmQgY2xlYXJpbmcgaXQgb25seQpoYXBw ZW5zIHVuZGVyIGZhaWxfYWRkZWQuICBMZWF2aW5nIG10ZC0+ZGV2LnR5cGUgbm9uLU5VTEwgY2F1 c2VzIGFueSByZXRyeQpvZiBhZGRfbXRkX2RldmljZSgpIHRvIGZhaWwgYXQgV0FSTl9PTkNFKG10 ZC0+ZGV2LnR5cGUsIC4uLiksIGFuZCBjYXVzZXMKX19wdXRfbXRkX2RldmljZSgpIG9uIGFuIG9w ZW4gcGFydGl0aW9uIHRvIGNhbGwga3JlZl9wdXQoJm1hc3Rlci0+cmVmY250LAptdGRfZGV2aWNl X3JlbGVhc2UpIG9uIGEgbWFzdGVyIHdob3NlIHN0cnVjdCBkZXZpY2Ugd2FzIG5ldmVyIHJlZ2lz dGVyZWQuCgpbIC4uLiBdCgo+IEBAIC0xMzQ4LDEzICsxNDg0LDE0IEBAIGludCBfX2dldF9tdGRf ZGV2aWNlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAJfQo+ ICAKPiArCW10ZF9nZXRfbGlmZXRpbWUobWFzdGVyKTsKPiAgCXdoaWxlIChtdGQpIHsKPiAgCQlp ZiAobXRkICE9IG1hc3RlcikKPiAgCQkJa3JlZl9nZXQoJm10ZC0+cmVmY250KTsKPiAgCQltdGQg PSBtdGQtPnBhcmVudDsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfTVREX1BB UlRJVElPTkVEX01BU1RFUikpCj4gKwlpZiAobWFzdGVyLT5kZXYudHlwZSkKPiAgCQlrcmVmX2dl dCgmbWFzdGVyLT5yZWZjbnQpOwo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC0xNDQxLDYgKzE1Nzgs NyBAQCB2b2lkIF9fcHV0X210ZF9kZXZpY2Uoc3RydWN0IG10ZF9pbmZvICptdGQpCj4gIAlzdHJ1 Y3QgbXRkX2luZm8gKm1hc3RlciA9IG10ZF9nZXRfbWFzdGVyKG10ZCk7Cj4gIAkvKiBtYXN0ZXIg Y2FuIGJlIGZyZWVkIGluIF9wdXRfZGV2aWNlICovCj4gIAlzdHJ1Y3QgbW9kdWxlICpvd25lciA9 IG1hc3Rlci0+b3duZXI7Cj4gKwlib29sIG1hbmFnZWQgPSBtYXN0ZXItPm1hc3Rlci5yZWxlYXNl Owo+ICAKPiAgCXdoaWxlIChtdGQpIHsKPiAgCQkvKiBrcmVmX3B1dCgpIGNhbiByZWxlc2UgbXRk LCBzbyBrZWVwIGEgcmVmZXJlbmNlIG10ZC0+cGFyZW50ICovCj4gQEAgLTE0NTEsMTIgKzE1ODks MTQgQEAgdm9pZCBfX3B1dF9tdGRfZGV2aWNlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQo+ICAJCW10 ZCA9IHBhcmVudDsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfTVREX1BBUlRJ VElPTkVEX01BU1RFUikpCj4gKwlpZiAobWFzdGVyLT5kZXYudHlwZSkKPiAgCQlrcmVmX3B1dCgm bWFzdGVyLT5yZWZjbnQsIG10ZF9kZXZpY2VfcmVsZWFzZSk7CgpbU2V2ZXJpdHk6IE1lZGl1bV0K Q2FuIG1hc3Rlci0+ZGV2LnR5cGUgY2hhbmdlIGZyb20gTlVMTCB0byBub24tTlVMTCBiZXR3ZWVu Cl9fZ2V0X210ZF9kZXZpY2UoKSBhbmQgX19wdXRfbXRkX2RldmljZSgpLCBjYXVzaW5nIGFuIHVu bWF0Y2hlZAprcmVmX3B1dCgmbWFzdGVyLT5yZWZjbnQsIG10ZF9kZXZpY2VfcmVsZWFzZSk/CgpX aGVuIENPTkZJR19NVERfUEFSVElUSU9ORURfTUFTVEVSPW4sIG1hc3Rlci0+ZGV2LnR5cGUgaXMg TlVMTCB3aGlsZQptdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKCkgcnVucyBwYXJzZV9tdGRfcGFy dGl0aW9ucygpLiAgSWYgYSBmaXJzdApwYXJ0aXRpb24gaXMgcmVnaXN0ZXJlZCBhbmQgb3BlbmVk IGJ5IGEgbm90aWZpZXIgb3IgdXNlcnNwYWNlIChzZWVpbmcKbWFzdGVyLT5kZXYudHlwZSA9PSBO VUxMIGluIF9fZ2V0X210ZF9kZXZpY2UoKSksIGFuZCBhIGxhdGVyIHBhcnRpdGlvbgpmYWlscyB0 byByZWdpc3RlciBpbiBhZGRfbXRkX3BhcnRpdGlvbnMoKSwgZGVsX210ZF9wYXJ0aXRpb25zKCkg dW5yZWdpc3RlcnMKdGhlIGZpcnN0IHBhcnRpdGlvbiB3aGlsZSBpdCByZW1haW5zIG9wZW46Cgpk cml2ZXJzL210ZC9tdGRjb3JlLmM6bXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpIHsKICAgIC4u LgoJcmV0ID0gcGFyc2VfbXRkX3BhcnRpdGlvbnMobXRkLCB0eXBlcywgcGFyc2VyX2RhdGEpOwoJ aWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKQoJCWdvdG8gb3V0OwoKCWlmIChyZXQgPiAwKQoJCXJl dCA9IDA7CgllbHNlIGlmIChucl9wYXJ0cykKCQlyZXQgPSBhZGRfbXRkX3BhcnRpdGlvbnMobXRk LCBwYXJ0cywgbnJfcGFydHMpOwoJZWxzZSBpZiAoIWRldmljZV9pc19yZWdpc3RlcmVkKCZtdGQt PmRldikpCgkJcmV0ID0gYWRkX210ZF9kZXZpY2UobXRkKTsKICAgIC4uLgp9CgpXaGVuIG5yX3Bh cnRzID09IDAgYW5kIHBhcnNlX210ZF9wYXJ0aXRpb25zKCkgcmV0dXJucyBhIG5vbi1kZWZlciBl cnJvciwKbXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpIGZhbGxzIGJhY2sgdG8gYWRkX210ZF9k ZXZpY2UobXRkKSwgd2hpY2ggc2V0cwptYXN0ZXItPmRldi50eXBlID0gJm10ZF9kZXZ0eXBlIGFu ZCBpbml0aWFsaXplcyBtYXN0ZXItPnJlZmNudCB0byAxLgpDbG9zaW5nIHRoZSBvcGVuIHBhcnRp dGlvbiBoYW5kbGUgdGhlbiBzZWVzIG1hc3Rlci0+ZGV2LnR5cGUgIT0gTlVMTCBpbgpfX3B1dF9t dGRfZGV2aWNlKCkgYW5kIGRyb3BzIG1hc3Rlci0+cmVmY250IHRvIDAgd2hpbGUgdGhlIG1hc3Rl ciBpcyBzdGlsbApyZWdpc3RlcmVkLgoKWzFdIGh0dHBzOi8vc2FzaGlrby5kZXYvIy9idWcvbGlu dXgtMTFmZGIzODMtMTMyZi00NzNiLTkyODQtMTAxYjQ3NTNmY2Q2CgotLSAKU2FzaGlrbyBBSSBy ZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYxMTA3LXN1Ym1pdC1y YXduYW5kLXJldGFpbmVkLWhhbmRsZS1saWZldGltZS12MS12MS0wLTAxODFlZjBjYzRjOEBnbWFp bC5jb20/cGFydD0zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hbWxvZ2ljCg==