| From 8361fb23992a3ce183b44b4fb10bb57908f02eca Mon Sep 17 00:00:00 2001 |
| From: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au> |
| Date: Tue, 10 Mar 2020 13:22:52 +0000 |
| Subject: [PATCH] nvmem: check for NULL reg_read and reg_write before |
| dereferencing |
| |
| commit 3c91ef69a3e94f78546b246225ed573fbf1735b4 upstream. |
| |
| Return -EPERM if reg_read is NULL in bin_attr_nvmem_read() or if |
| reg_write is NULL in bin_attr_nvmem_write(). |
| |
| This prevents NULL dereferences such as the one described in |
| 03cd45d2e219 ("thunderbolt: Prevent crash if non-active NVMem file is |
| read") |
| |
| Signed-off-by: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au> |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> |
| Link: https://lore.kernel.org/r/20200310132257.23358-10-srinivas.kandagatla@linaro.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/nvmem/nvmem-sysfs.c b/drivers/nvmem/nvmem-sysfs.c |
| index 9e0c429cd08a..8759c4470012 100644 |
| --- a/drivers/nvmem/nvmem-sysfs.c |
| +++ b/drivers/nvmem/nvmem-sysfs.c |
| @@ -56,6 +56,9 @@ static ssize_t bin_attr_nvmem_read(struct file *filp, struct kobject *kobj, |
| |
| count = round_down(count, nvmem->word_size); |
| |
| + if (!nvmem->reg_read) |
| + return -EPERM; |
| + |
| rc = nvmem->reg_read(nvmem->priv, pos, buf, count); |
| |
| if (rc) |
| @@ -90,6 +93,9 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj, |
| |
| count = round_down(count, nvmem->word_size); |
| |
| + if (!nvmem->reg_write) |
| + return -EPERM; |
| + |
| rc = nvmem->reg_write(nvmem->priv, pos, buf, count); |
| |
| if (rc) |
| -- |
| 2.7.4 |
| |