Message ID | 562E2CB1.80706@linaro.org |
---|---|
State | New |
Headers | show |
On 16/11/15 15:33, Ariel D'Alessandro wrote: >>> >>-------------------------------->cut<---------------------------------- >>> >> From 8cae10eff8ea8da9c5a8058ff75abeeddd8a8224 Mon Sep 17 00:00:00 2001 >>> >>From: Srinivas Kandagatla<srinivas.kandagatla@linaro.org> >>> >>Date: Mon, 26 Oct 2015 13:30:24 +0000 >>> >>Subject: [PATCH] nvmem: core: return error for non word aligned bytes >>> >> >>> >>nvmem providers have restrictions on register strides, so return error >>> >>code when users attempt to read/write buffers with sizes which are not >>> >>aligned to the word boundary. >>> >> >>> >>Without this patch the userspace would continue to try as it does not >>> >>get any error from the nvmem core, resulting in a hang. >>> >> >>> >>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 6fd4e5a..9d11d98 100644 >>> >>--- a/drivers/nvmem/core.c >>> >>+++ b/drivers/nvmem/core.c >>> >>@@ -70,6 +70,9 @@ static ssize_t bin_attr_nvmem_read(struct file *filp, >>> >>struct kobject *kobj, >>> >> if (pos >= nvmem->size) >>> >> return 0; >>> >> >>> >>+ if (count < nvmem->word_size) >>> >>+ return -EINVAL; >>> >>+ >>> >> if (pos + count > nvmem->size) >>> >> count = nvmem->size - pos; >>> >> >>> >>@@ -95,6 +98,9 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, >>> >>struct kobject *kobj, >>> >> if (pos >= nvmem->size) >>> >> return 0; >>> >> >>> >>+ if (count < nvmem->word_size) >>> >>+ return -EINVAL; >>> >>+ >>> >> if (pos + count > nvmem->size) >>> >> count = nvmem->size - pos; >>> >> >> > >> >Patch looks good to me. I think that it solves the issue. >> >I don't have the board here right now, so I'll check it ASAP and give >> >some feedback. > Finally tested this. As it seemed, it solved the issue. > Are you submitting a patch for this? Yes, I will send a patch to the mailing list. --srini > > Thanks again. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 6fd4e5a..9d11d98 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -70,6 +70,9 @@ static ssize_t bin_attr_nvmem_read(struct file *filp, struct kobject *kobj, if (pos >= nvmem->size) return 0; + if (count < nvmem->word_size) + return -EINVAL; + if (pos + count > nvmem->size) count = nvmem->size - pos;