| From 20ea39ef9f2f911bd01c69519e7d69cfec79fde3 Mon Sep 17 00:00:00 2001 |
| From: Lars-Peter Clausen <lars@metafoo.de> |
| Date: Wed, 20 Feb 2019 17:11:32 +0200 |
| Subject: iio: Fix scan mask selection |
| |
| From: Lars-Peter Clausen <lars@metafoo.de> |
| |
| commit 20ea39ef9f2f911bd01c69519e7d69cfec79fde3 upstream. |
| |
| The trialmask is expected to have all bits set to 0 after allocation. |
| Currently kmalloc_array() is used which does not zero the memory and so |
| random bits are set. This results in random channels being enabled when |
| they shouldn't. Replace kmalloc_array() with kcalloc() which has the same |
| interface but zeros the memory. |
| |
| Note the fix is actually required earlier than the below fixes tag, but |
| will require a manual backport due to move from kmalloc to kmalloc_array. |
| |
| Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> |
| Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> |
| Fixes commit 057ac1acdfc4 ("iio: Use kmalloc_array() in iio_scan_mask_set()"). |
| Cc: <Stable@vger.kernel.org> |
| Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/iio/industrialio-buffer.c | 5 ++--- |
| 1 file changed, 2 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/iio/industrialio-buffer.c |
| +++ b/drivers/iio/industrialio-buffer.c |
| @@ -320,9 +320,8 @@ static int iio_scan_mask_set(struct iio_ |
| const unsigned long *mask; |
| unsigned long *trialmask; |
| |
| - trialmask = kmalloc_array(BITS_TO_LONGS(indio_dev->masklength), |
| - sizeof(*trialmask), |
| - GFP_KERNEL); |
| + trialmask = kcalloc(BITS_TO_LONGS(indio_dev->masklength), |
| + sizeof(*trialmask), GFP_KERNEL); |
| if (trialmask == NULL) |
| return -ENOMEM; |
| if (!indio_dev->masklength) { |