From nobody Fri Dec 19 18:41:36 2025 Received: from cstnet.cn (smtp84.cstnet.cn [159.226.251.84]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 650C81ADC83 for ; Thu, 4 Dec 2025 08:07:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.84 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764835644; cv=none; b=Gzx2Kf/YOyrD2ur3osq7b8ioe+3PJgAbYAG29uelATVhxUm/mul674kogrC55080KeNkxAVlD5irdadj+f7rtcK7coIsp3Ti/pKbnBLMFRmqfywgjmLiwI3oGglgOmoRgY2Yo0gKI02FU0Zn28oNhmwV25pTYF73qXSStgoq6bo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764835644; c=relaxed/simple; bh=OzrNntYTr46dREBXArLiBm3464Bo4NEDid8SZvL951w=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=drc8GOlX9deVpCZ5b6lO5xP2Ew3M1HrOykiN3IL281FL7RWoet9QkvbvVNmn645uTApMkaYtx0jb+SgxzniywRBRrFxwFMR7C0gaUA5OK8o8dVq+8BpLiB0z6sxexzWfDHj69DjOEroig4S6fM44HfGDfDeIDZzJcRXKb2yg9tM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from DESKTOP-L0HPE2S (unknown [124.16.141.245]) by APP-05 (Coremail) with SMTP id zQCowABnamsuQTFpJ3csAw--.125S2; Thu, 04 Dec 2025 16:07:11 +0800 (CST) From: Haotian Zhang To: Srinivas Kandagatla Cc: nicholas.johnson-opensource@outlook.com.au, linux-kernel@vger.kernel.org, Haotian Zhang Subject: [PATCH] nvmem: core: fix wrong error codes for missing reg_read/reg_write Date: Thu, 4 Dec 2025 16:06:43 +0800 Message-ID: <20251204080643.1291-1-vulab@iscas.ac.cn> X-Mailer: git-send-email 2.50.1.windows.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: zQCowABnamsuQTFpJ3csAw--.125S2 X-Coremail-Antispam: 1UD129KBjvJXoWrKFyxJFy8Ar15Xr4UuF13twb_yoW8JF13pF Z5A34UZrZFkF1Ykw4UJan8Xas8twn3JFWjka48Ca43Zws5tryYk34YgFyqqrWvyr9xur4Y vF4UWryruF4YvrJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUym14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26ryj6F1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4j 6F4UM28EF7xvwVC2z280aVAFwI0_Cr1j6rxdM28EF7xvwVC2z280aVCY1x0267AKxVW0oV Cq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0 I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r 4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCF04k20xvY0x0EwIxG rwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4 vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IY x2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26c xKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAF wI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUVMKAUUUUU= X-CM-SenderInfo: pyxotu46lvutnvoduhdfq/1tbiDAUGA2kxGLCf7QAAsO Content-Type: text/plain; charset="utf-8" When nvmem accessors are NULL, returning -EPERM misrepresents the condition as a permission error instead of an unsupported operation. Return -EOPNOTSUPP when reg_read/reg_write is NULL. Keep -EPERM only for read-only cases. Fixes: 3c91ef69a3e9 ("nvmem: check for NULL reg_read and reg_write before d= ereferencing") Signed-off-by: Haotian Zhang --- drivers/nvmem/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 597598db88f4..93591de530d3 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -232,7 +232,7 @@ static ssize_t bin_attr_nvmem_read(struct file *filp, s= truct kobject *kobj, count =3D round_down(count, nvmem->word_size); =20 if (!nvmem->reg_read) - return -EPERM; + return -EOPNOTSUPP; =20 rc =3D nvmem_reg_read(nvmem, pos, buf, count); =20 @@ -264,7 +264,9 @@ 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) + return -EOPNOTSUPP; + if (nvmem->read_only) return -EPERM; =20 rc =3D nvmem_reg_write(nvmem, pos, buf, count); --=20 2.50.1.windows.1