Do not leak memory by updating pointer with potentially
NULL realloc return value.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <[email protected]>
---
 drivers/iio/light/adjd_s311.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/light/adjd_s311.c b/drivers/iio/light/adjd_s311.c
index 1cbb449..0adda5b 100644
--- a/drivers/iio/light/adjd_s311.c
+++ b/drivers/iio/light/adjd_s311.c
@@ -271,12 +271,18 @@ static int adjd_s311_update_scan_mode(struct iio_dev 
*indio_dev,
        const unsigned long *scan_mask)
 {
        struct adjd_s311_data *data = iio_priv(indio_dev);
-       data->buffer = krealloc(data->buffer, indio_dev->scan_bytes,
+       u16 *new_buffer;
+       int ret = 0;
+
+       new_buffer = krealloc(data->buffer, indio_dev->scan_bytes,
                                GFP_KERNEL);
-       if (!data->buffer)
-               return -ENOMEM;
+       if (new_buffer == NULL) {
+               kfree(data->buffer);
+               ret = -ENOMEM;
+       }
+       data->buffer = new_buffer;
 
-       return 0;
+       return ret;
 }
 
 static const struct iio_info adjd_s311_info = {
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to