linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
To: gregkh@linuxfoundation.org
Cc: linux-kernel@vger.kernel.org,
	Douglas Anderson <dianders@chromium.org>,
	Ravi Kumar Bokka <rbokka@codeaurora.org>,
	Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Subject: [PATCH 03/14] nvmem: Enforce nvmem stride in the sysfs interface
Date: Wed, 22 Jul 2020 11:06:54 +0100	[thread overview]
Message-ID: <20200722100705.7772-4-srinivas.kandagatla@linaro.org> (raw)
In-Reply-To: <20200722100705.7772-1-srinivas.kandagatla@linaro.org>

From: Douglas Anderson <dianders@chromium.org>

The 'struct nvmem_config' has a stride attribute that specifies the
needed alignment for accesses into the nvmem.  This is used in
nvmem_cell_info_to_nvmem_cell() but not in the sysfs read/write
functions.  If the alignment is important in one place it's important
everywhere, so let's add enforcement.

For now we'll consider it totally invalid to access with the wrong
alignment.  We could relax this in the read case where we could just
read some extra bytes and throw them away.  Relaxing it in the write
case seems harder (and less safe?) since we'd have to read some data
first and then write it back.  To keep it symmetric we'll just
disallow it in both cases.

Reported-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Tested-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
---
 drivers/nvmem/core.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 927eb5f6003f..fc480d636be2 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -135,6 +135,9 @@ static ssize_t bin_attr_nvmem_read(struct file *filp, struct kobject *kobj,
 	if (pos >= nvmem->size)
 		return 0;
 
+	if (!IS_ALIGNED(pos, nvmem->stride))
+		return -EINVAL;
+
 	if (count < nvmem->word_size)
 		return -EINVAL;
 
@@ -172,6 +175,9 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
 	if (pos >= nvmem->size)
 		return -EFBIG;
 
+	if (!IS_ALIGNED(pos, nvmem->stride))
+		return -EINVAL;
+
 	if (count < nvmem->word_size)
 		return -EINVAL;
 
-- 
2.21.0


  parent reply	other threads:[~2020-07-22 10:08 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-22 10:06 [PATCH 00/14] nvmem: patches (set 1) for 5.9 Srinivas Kandagatla
2020-07-22 10:06 ` [PATCH 01/14] nvmem: sprd: Fix return value of sprd_efuse_probe() Srinivas Kandagatla
2020-07-22 10:06 ` [PATCH 02/14] MAINTAINERS: Add git tree for NVMEM FRAMEWORK Srinivas Kandagatla
2020-07-22 10:06 ` Srinivas Kandagatla [this message]
2020-07-22 10:06 ` [PATCH 04/14] nvmem: sc27xx: add sc2730 efuse support Srinivas Kandagatla
2020-07-22 10:06 ` [PATCH 05/14] nvmem: core: Grammar fixes for help text Srinivas Kandagatla
2020-07-22 10:06 ` [PATCH 06/14] nvmem: core: Add nvmem_cell_read_u8() Srinivas Kandagatla
2020-07-22 10:06 ` [PATCH 07/14] nvmem: core: add support to auto devid Srinivas Kandagatla
2020-07-22 10:06 ` [PATCH 08/14] nvmem: qfprom: use NVMEM_DEVID_AUTO for multiple instances Srinivas Kandagatla
2020-07-22 10:07 ` [PATCH 09/14] dt-bindings: nvmem: qfprom: Convert to yaml Srinivas Kandagatla
2020-07-22 10:07 ` [PATCH 10/14] dt-bindings: nvmem: Add properties needed for blowing fuses Srinivas Kandagatla
2020-07-22 10:07 ` [PATCH 11/14] nvmem: qfprom: Add fuse blowing support Srinivas Kandagatla
2020-07-22 10:07 ` [PATCH 12/14] nvmem: update Kconfig description Srinivas Kandagatla
2020-07-22 10:07 ` [PATCH 13/14] dt-bindings: nvmem: SID: add binding for A100's SID controller Srinivas Kandagatla
2020-07-22 10:07 ` [PATCH 14/14] nvmem: qcom-spmi-sdam: Enable multiple devices Srinivas Kandagatla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200722100705.7772-4-srinivas.kandagatla@linaro.org \
    --to=srinivas.kandagatla@linaro.org \
    --cc=dianders@chromium.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rbokka@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).