mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 21:02:19 +00:00
nvmem: core: return error for non word aligned access
nvmem providers have restrictions on register strides, so return error when users attempt to read/write buffers with sizes which are less than word size. Without this patch the userspace would continue to try as it does not get any error from the nvmem core, resulting in a hang or endless loop in userspace. Reported-by: Ariel D'Alessandro <ariel@vanguardiasur.com.ar> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
4c7e4fe377
commit
313a72ff98
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user