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 D44DEC44507 for ; Wed, 15 Jul 2026 20:04:22 +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=Mq4JYsRCIDv7FQ+RP8r7jrxcFAPwl/9pWZn2a6cqXyA=; b=RhcRlu21dbtqAn PkeP9Tl+MYSKcPC8j8X0yuWjiE42HiBZSG2Ggv3Go9QKytn74mf0QzplhEKH+P4AVIPKqUaQXrYoR 0wAZIoeuxmv4shaR0ADen60JwR2f2SiQeMjqv4NhLnBNhLeqYQddfoyrxmeCCCdaeHcpfNcLJabma xGYTKFDgalvPVfFmf2NeEF1Pi2ofICJnRAaAoNToDXqT8kvUYbsFrBp/auMOu53i3QBSCn05BNMYN rfHPYjqIltJbRxhCTxGxRajMul4zjEjdQQsvC0TWw/wn0Zug/2+iiCLYBg3lHah4h6WAeZ0+ZDILC ijbEu9ZOK7JuHhmeQw5A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wk5q5-0000000Fqm0-2SjF; Wed, 15 Jul 2026 20:04:17 +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 1wk5q4-0000000Fqlq-39Z3 for linux-amlogic@lists.infradead.org; Wed, 15 Jul 2026 20:04:16 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 3D0A840A2C; Wed, 15 Jul 2026 20:04:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C66C61F000E9; Wed, 15 Jul 2026 20:04:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784145856; bh=WlrTqgmh2dQDac3dpJtr8//yeT7zYfmesannB0/yeEM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=geVekIWc5gozLI5pq/d796KX6jXVHIdwEvqv4hiytaUSgTrtI1LfUa8453Yngw3Bz u3EitTkiOoZ6F6nvBlOmDDARt7umb9m8ETVIq+PB3qkEeVASbzVFWFQ5/fUh65blnr NWH6UTLVVHTCfTfPMY2gackgsj1u363wi52/MKeMkDBWNC0sdrxgtb0FCMnLPa8VtN Tk2p4PzjnW8oDRqaRHLYAuLxXFgqbkZ911HqpiTBDVudfEAvS+k1nDzfuPDbhP8WoO V1kBDbtOW6sVk7DPwAO8Cq6RoPfIXtBOvEq8v1uhFL5vQpUcmC5JUQinsyqt1G1vj+ IkA0JPJaKpE3g== From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 1/2] nvmem: core: deprecate reg_write callback and add reg_write_const To: "Link Mauve" Cc: imx@lists.linux.dev, Frank.Li@kernel.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org, ojeda@kernel.org In-Reply-To: <20260715195520.25410-2-linkmauve@linkmauve.fr> References: <20260715195520.25410-1-linkmauve@linkmauve.fr> <20260715195520.25410-2-linkmauve@linkmauve.fr> Date: Wed, 15 Jul 2026 20:04:14 +0000 Message-Id: <20260715200415.C66C61F000E9@smtp.kernel.org> X-BeenThere: linux-amlogic@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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBJ bmNvcnJlY3QgYm9vbGVhbiBsb2dpYyB1c2luZyAnfHwnIGluc3RlYWQgb2YgJyYmJyBmb3JjZXMg YWxsIE5WTUVNIGRldmljZXMgdG8gYmUgdHJlYXRlZCBhcyByZWFkLW9ubHkgYW5kIHVuY29uZGl0 aW9uYWxseSBkaXNhYmxlcyBoYXJkd2FyZSB3cml0ZXMuCgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtIaWdoXSBDb25jdXJyZW50IG52bWVtIHdyaXRlcyByYWNlIG9uIHRoZSB3cml0ZS1wcm90ZWN0 IEdQSU8sIHdoaWNoIGNhbiBsZWFkIHRvIHVucHJvdGVjdGVkIGhhcmR3YXJlIHN0YXRlcyBhbmQg ZmFpbGVkIHdyaXRlcy4KLS0KCi0tLSBQYXRjaCBbMV06IFtQQVRDSCB2MiAxLzJdIG52bWVtOiBj b3JlOiBkZXByZWNhdGUgcmVnX3dyaXRlIGNhbGxiYWNrIGFuZCBhZGQgcmVnX3dyaXRlX2NvbnN0 IC0tLQpjb21taXQgZmQ5YjZiZDFlNjdhMzBkMDE4YjdlOGYwZDlkYjYwNDAzOTg4ZTA1YQpBdXRo b3I6IExpbmsgTWF1dmUgPGxpbmttYXV2ZUBsaW5rbWF1dmUuZnI+Cgpudm1lbTogY29yZTogZGVw cmVjYXRlIHJlZ193cml0ZSBjYWxsYmFjayBhbmQgYWRkIHJlZ193cml0ZV9jb25zdAoKVGhpcyBw YXRjaCBkZXByZWNhdGVzIHRoZSByZWdfd3JpdGUgY2FsbGJhY2sgaW4gZmF2b3Igb2YgcmVnX3dy aXRlX2NvbnN0LAp3aGljaCB0YWtlcyBhIGNvbnN0IHBvaW50ZXIgZm9yIHRoZSBkYXRhIGJ1ZmZl ci4gSXQgdXBkYXRlcyB0aGUgbnZtZW0gY29yZSB0bwpzdXBwb3J0IGVpdGhlciBjYWxsYmFjayB3 aGVuIGNoZWNraW5nIGZvciB3cml0ZSBjYXBhYmlsaXRpZXMuCgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL252bWVtL2NvcmUuYyBiL2RyaXZlcnMvbnZtZW0vY29yZS5jCj4gaW5kZXggOWQxODJlZGEw Yzk5NC4uNjZhODVkMzExNDlkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL252bWVtL2NvcmUuYwo+ ICsrKyBiL2RyaXZlcnMvbnZtZW0vY29yZS5jCj4gQEAgLTYyLDEzICs2MiwyMCBAQCBzdGF0aWMg aW50IF9fbnZtZW1fcmVnX3JlYWQoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0sIHVuc2lnbmVk IGludCBvZmZzZXQsCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgX19udm1lbV9yZWdfd3JpdGUoc3Ry dWN0IG52bWVtX2RldmljZSAqbnZtZW0sIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gLQkJCSAgICAg dm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpCj4gKwkJCSAgICAgY29uc3Qgdm9pZCAqdmFsLCBzaXpl X3QgYnl0ZXMpCj4gIHsKPiAgCWludCByZXQ7Cj4gIAo+ICsJaWYgKG52bWVtLT5yZWdfd3JpdGVf Y29uc3QpIHsKPiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAobnZtZW0tPndwX2dwaW8sIDAp Owo+ICsJCXJldCA9IG52bWVtLT5yZWdfd3JpdGVfY29uc3QobnZtZW0tPnByaXYsIG9mZnNldCwg dmFsLCBieXRlcyk7Cj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKG52bWVtLT53cF9ncGlv LCAxKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBp cyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGRvZXMgdG9nZ2xpbmcgdGhlIHdwX2dwaW8gaGVy ZSBoYXZlIGEgcmFjZQpjb25kaXRpb24/CgpJZiB0d28gdGhyZWFkcyBjb25jdXJyZW50bHkgd3Jp dGUgdG8gdGhlIHNhbWUgTlZNRU0gZGV2aWNlLCB0aGV5IGNvdWxkCmV4ZWN1dGUgX19udm1lbV9y ZWdfd3JpdGUoKSBzaW11bHRhbmVvdXNseS4gT25lIHRocmVhZCBjb3VsZCByZS1hc3NlcnQgdGhl CndyaXRlLXByb3RlY3QgR1BJTyB3aGlsZSB0aGUgb3RoZXIgdGhyZWFkJ3MgaGFyZHdhcmUgd3Jp dGUgaXMgc3RpbGwgaW4KcHJvZ3Jlc3MsIHBvdGVudGlhbGx5IGNhdXNpbmcgdGhlIHdyaXRlIHRv IGZhaWwgb3IgY29ycnVwdCB0aGUgd3JpdGUgc2VxdWVuY2UuCgo+ICAJaWYgKG52bWVtLT5yZWdf d3JpdGUpIHsKPiAgCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAobnZtZW0tPndwX2dwaW8sIDAp Owo+IC0JCXJldCA9IG52bWVtLT5yZWdfd3JpdGUobnZtZW0tPnByaXYsIG9mZnNldCwgdmFsLCBi eXRlcyk7Cj4gKwkJcmV0ID0gbnZtZW0tPnJlZ193cml0ZShudm1lbS0+cHJpdiwgb2Zmc2V0LCAo dm9pZCAqKXZhbCwgYnl0ZXMpOwo+ICAJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChudm1lbS0+ d3BfZ3BpbywgMSk7Cj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KClsgLi4uIF0KCj4gQEAgLTI2NCw3 ICsyNzEsNyBAQCBzdGF0aWMgc3NpemVfdCBiaW5fYXR0cl9udm1lbV93cml0ZShzdHJ1Y3QgZmls ZSAqZmlscCwgc3RydWN0IGtvYmplY3QgKmtvYmosCj4gIAo+ICAJY291bnQgPSByb3VuZF9kb3du KGNvdW50LCBudm1lbS0+d29yZF9zaXplKTsKPiAgCj4gLQlpZiAoIW52bWVtLT5yZWdfd3JpdGUg fHwgbnZtZW0tPnJlYWRfb25seSkKPiArCWlmICghbnZtZW0tPnJlZ193cml0ZSB8fCAhbnZtZW0t PnJlZ193cml0ZV9jb25zdCB8fCBudm1lbS0+cmVhZF9vbmx5KQo+ICAJCXJldHVybiAtRVBFUk07 CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgdGhpcyBsb2dpYyBpbmFkdmVydGVudGx5IHJlamVjdCBh bGwgd3JpdGVzPwoKU2luY2UgZHJpdmVycyB3aWxsIHR5cGljYWxseSBwcm92aWRlIGVpdGhlciBy ZWdfd3JpdGUgb3IgcmVnX3dyaXRlX2NvbnN0CihidXQgbm90IGJvdGgpLCB0aGlzIGNvbmRpdGlv biB3aWxsIGFsd2F5cyBldmFsdWF0ZSB0byB0cnVlLCBmYWlsaW5nIGFsbApzeXNmcyB3cml0ZXMg d2l0aCAtRVBFUk0uIFNob3VsZCB0aGlzIGJlICYmIGluc3RlYWQgb2YgfHw/CgpbIC4uLiBdCgo+ IEBAIC0yODUsNyArMjkyLDcgQEAgc3RhdGljIHVtb2RlX3QgbnZtZW1fYmluX2F0dHJfZ2V0X3Vt b2RlKHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtKQo+ICAJaWYgKCFudm1lbS0+cmVhZF9vbmx5 KQo+ICAJCW1vZGUgfD0gMDIwMDsKPiAgCj4gLQlpZiAoIW52bWVtLT5yZWdfd3JpdGUpCj4gKwlp ZiAoIW52bWVtLT5yZWdfd3JpdGUgfHwgIW52bWVtLT5yZWdfd3JpdGVfY29uc3QpCj4gIAkJbW9k ZSAmPSB+MDIwMDsKCltTZXZlcml0eTogSGlnaF0KU2ltaWxhciB0byB0aGUgc3lzZnMgd3JpdGUg ZnVuY3Rpb24gYWJvdmUsIGRvZXMgdGhpcyBzdHJpcCB3cml0ZSBwZXJtaXNzaW9ucwpmcm9tIHN5 c2ZzIGF0dHJpYnV0ZXMgZm9yIGFsbCBkZXZpY2VzPwoKU2luY2UgYXQgbGVhc3Qgb25lIG9mIHRo ZXNlIGNhbGxiYWNrcyB3aWxsIHR5cGljYWxseSBiZSBOVUxMLCB0aGlzIGNvbmRpdGlvbgppcyBh bHdheXMgdHJ1ZS4KClsgLi4uIF0KCj4gQEAgLTk3NSw3ICs5ODMsNyBAQCBzdHJ1Y3QgbnZtZW1f ZGV2aWNlICpudm1lbV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbnZtZW1fY29uZmlnICpjb25maWcp Cj4gIAkJZ290byBlcnJfcHV0X2RldmljZTsKPiAgCj4gIAludm1lbS0+cmVhZF9vbmx5ID0gZGV2 aWNlX3Byb3BlcnR5X3ByZXNlbnQoY29uZmlnLT5kZXYsICJyZWFkLW9ubHkiKSB8fAo+IC0JCQkg ICBjb25maWctPnJlYWRfb25seSB8fCAhbnZtZW0tPnJlZ193cml0ZTsKPiArCQkJICAgY29uZmln LT5yZWFkX29ubHkgfHwgIW52bWVtLT5yZWdfd3JpdGUgfHwgIW52bWVtLT5yZWdfd3JpdGVfY29u c3Q7CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgdGhpcyB1bmNvbmRpdGlvbmFsbHkgc2V0IHRoZSBk ZXZpY2UgdG8gcmVhZC1vbmx5IGR1cmluZyByZWdpc3RyYXRpb24/CgpVc2luZyB8fCBtZWFucyBh bnkgZGV2aWNlIHRoYXQgZG9lc24ndCBwcm92aWRlIGJvdGggY2FsbGJhY2tzIHdpbGwgYmUgbWFy a2VkCmFzIHJlYWQtb25seS4KCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hp a28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA3MTUxOTU1MjAuMjU0MTAtMS1saW5rbWF1dmVAbGlua21h dXZlLmZyP3BhcnQ9MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGludXgtYW1sb2dpY0BsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYW1sb2dpYwo= 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 326B24BC026 for ; Wed, 15 Jul 2026 20:04:16 +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=1784145859; cv=none; b=HUM0FLsK8M/Zilhq47vrMBhTSG6CKGTDXCXL/lTgQAsP426gR15jT9nllN0Kucj5vd/Ryq58peeAq57NJh1Bl3VgdwDroEzDdbmEnhB8KMBd6R2YP9tsmEK2ANmfjzwWfF8xuvOQDDRu9sYreZgAiqZNlwU3j1tKBt7GVHN3apo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784145859; c=relaxed/simple; bh=JbrEv1x2xWTNLAKRGEfgpMIshgG7eDaFSjvk7kwkOm0=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=SbqZwIIOVk6Y1EBlNTlKvOR9cWOJAdHVcjgpQdI3+JdKFTzSTU4v/q7ZZXprHi62/kq1dez3YRIP2VZniSxajAPAwrGRcP0UTdMiH7MkGjvqGJ2DNUHGWTc4tJt2JiYYxGu5tk2p/6HHMiOsplPp1NH+4tWKz0B4bcHTo7ij9XY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=geVekIWc; 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="geVekIWc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C66C61F000E9; Wed, 15 Jul 2026 20:04:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784145856; bh=WlrTqgmh2dQDac3dpJtr8//yeT7zYfmesannB0/yeEM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=geVekIWc5gozLI5pq/d796KX6jXVHIdwEvqv4hiytaUSgTrtI1LfUa8453Yngw3Bz u3EitTkiOoZ6F6nvBlOmDDARt7umb9m8ETVIq+PB3qkEeVASbzVFWFQ5/fUh65blnr NWH6UTLVVHTCfTfPMY2gackgsj1u363wi52/MKeMkDBWNC0sdrxgtb0FCMnLPa8VtN Tk2p4PzjnW8oDRqaRHLYAuLxXFgqbkZ911HqpiTBDVudfEAvS+k1nDzfuPDbhP8WoO V1kBDbtOW6sVk7DPwAO8Cq6RoPfIXtBOvEq8v1uhFL5vQpUcmC5JUQinsyqt1G1vj+ IkA0JPJaKpE3g== From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 1/2] nvmem: core: deprecate reg_write callback and add reg_write_const Reply-To: sashiko-reviews@lists.linux.dev To: "Link Mauve" Cc: imx@lists.linux.dev, Frank.Li@kernel.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org, ojeda@kernel.org In-Reply-To: <20260715195520.25410-2-linkmauve@linkmauve.fr> References: <20260715195520.25410-1-linkmauve@linkmauve.fr> <20260715195520.25410-2-linkmauve@linkmauve.fr> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 15 Jul 2026 20:04:14 +0000 Message-Id: <20260715200415.C66C61F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: New issues: - [High] Incorrect boolean logic using '||' instead of '&&' forces all NVME= M devices to be treated as read-only and unconditionally disables hardware = writes. Pre-existing issues: - [High] Concurrent nvmem writes race on the write-protect GPIO, which can = lead to unprotected hardware states and failed writes. -- --- Patch [1]: [PATCH v2 1/2] nvmem: core: deprecate reg_write callback and= add reg_write_const --- commit fd9b6bd1e67a30d018b7e8f0d9db60403988e05a Author: Link Mauve nvmem: core: deprecate reg_write callback and add reg_write_const This patch deprecates the reg_write callback in favor of reg_write_const, which takes a const pointer for the data buffer. It updates the nvmem core = to support either callback when checking for write capabilities. > diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c > index 9d182eda0c994..66a85d31149d7 100644 > --- a/drivers/nvmem/core.c > +++ b/drivers/nvmem/core.c > @@ -62,13 +62,20 @@ static int __nvmem_reg_read(struct nvmem_device *nvme= m, unsigned int offset, > } > =20 > static int __nvmem_reg_write(struct nvmem_device *nvmem, unsigned int of= fset, > - void *val, size_t bytes) > + const void *val, size_t bytes) > { > int ret; > =20 > + if (nvmem->reg_write_const) { > + gpiod_set_value_cansleep(nvmem->wp_gpio, 0); > + ret =3D nvmem->reg_write_const(nvmem->priv, offset, val, bytes); > + gpiod_set_value_cansleep(nvmem->wp_gpio, 1); > + return ret; > + } > + [Severity: High] This is a pre-existing issue, but does toggling the wp_gpio here have a race condition? If two threads concurrently write to the same NVMEM device, they could execute __nvmem_reg_write() simultaneously. One thread could re-assert the write-protect GPIO while the other thread's hardware write is still in progress, potentially causing the write to fail or corrupt the write sequen= ce. > if (nvmem->reg_write) { > gpiod_set_value_cansleep(nvmem->wp_gpio, 0); > - ret =3D nvmem->reg_write(nvmem->priv, offset, val, bytes); > + ret =3D nvmem->reg_write(nvmem->priv, offset, (void *)val, bytes); > gpiod_set_value_cansleep(nvmem->wp_gpio, 1); > return ret; > } [ ... ] > @@ -264,7 +271,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp= , struct kobject *kobj, > =20 > count =3D round_down(count, nvmem->word_size); > =20 > - if (!nvmem->reg_write || nvmem->read_only) > + if (!nvmem->reg_write || !nvmem->reg_write_const || nvmem->read_only) > return -EPERM; [Severity: High] Does this logic inadvertently reject all writes? Since drivers will typically provide either reg_write or reg_write_const (but not both), this condition will always evaluate to true, failing all sysfs writes with -EPERM. Should this be && instead of ||? [ ... ] > @@ -285,7 +292,7 @@ static umode_t nvmem_bin_attr_get_umode(struct nvmem_= device *nvmem) > if (!nvmem->read_only) > mode |=3D 0200; > =20 > - if (!nvmem->reg_write) > + if (!nvmem->reg_write || !nvmem->reg_write_const) > mode &=3D ~0200; [Severity: High] Similar to the sysfs write function above, does this strip write permissions from sysfs attributes for all devices? Since at least one of these callbacks will typically be NULL, this condition is always true. [ ... ] > @@ -975,7 +983,7 @@ struct nvmem_device *nvmem_register(const struct nvme= m_config *config) > goto err_put_device; > =20 > nvmem->read_only =3D device_property_present(config->dev, "read-only") = || > - config->read_only || !nvmem->reg_write; > + config->read_only || !nvmem->reg_write || !nvmem->reg_write_const; [Severity: High] Does this unconditionally set the device to read-only during registration? Using || means any device that doesn't provide both callbacks will be marked as read-only. --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260715195520.2541= 0-1-linkmauve@linkmauve.fr?part=3D1