iio: dummy: iio_simple_dummy: check the return value of kstrdup()
kstrdup() is also a memory allocation-related function, it returns NULL when some memory errors happen. So it is better to check the return value of it so to catch the memory error in time. Besides, there should have a kfree() to clear up the allocation if we get a failure later in this function to prevent memory leak. Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com> Link: https://lore.kernel.org/r/tencent_C920CFCC33B9CC1C63141FE1334A39FF8508@qq.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
879a523797
commit
ba93642188
|
@ -575,10 +575,9 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
|
|||
*/
|
||||
|
||||
swd = kzalloc(sizeof(*swd), GFP_KERNEL);
|
||||
if (!swd) {
|
||||
ret = -ENOMEM;
|
||||
goto error_kzalloc;
|
||||
}
|
||||
if (!swd)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
/*
|
||||
* Allocate an IIO device.
|
||||
*
|
||||
|
@ -590,7 +589,7 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
|
|||
indio_dev = iio_device_alloc(parent, sizeof(*st));
|
||||
if (!indio_dev) {
|
||||
ret = -ENOMEM;
|
||||
goto error_ret;
|
||||
goto error_free_swd;
|
||||
}
|
||||
|
||||
st = iio_priv(indio_dev);
|
||||
|
@ -616,6 +615,10 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
|
|||
* indio_dev->name = spi_get_device_id(spi)->name;
|
||||
*/
|
||||
indio_dev->name = kstrdup(name, GFP_KERNEL);
|
||||
if (!indio_dev->name) {
|
||||
ret = -ENOMEM;
|
||||
goto error_free_device;
|
||||
}
|
||||
|
||||
/* Provide description of available channels */
|
||||
indio_dev->channels = iio_dummy_channels;
|
||||
|
@ -632,7 +635,7 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
|
|||
|
||||
ret = iio_simple_dummy_events_register(indio_dev);
|
||||
if (ret < 0)
|
||||
goto error_free_device;
|
||||
goto error_free_name;
|
||||
|
||||
ret = iio_simple_dummy_configure_buffer(indio_dev);
|
||||
if (ret < 0)
|
||||
|
@ -649,11 +652,12 @@ error_unconfigure_buffer:
|
|||
iio_simple_dummy_unconfigure_buffer(indio_dev);
|
||||
error_unregister_events:
|
||||
iio_simple_dummy_events_unregister(indio_dev);
|
||||
error_free_name:
|
||||
kfree(indio_dev->name);
|
||||
error_free_device:
|
||||
iio_device_free(indio_dev);
|
||||
error_ret:
|
||||
error_free_swd:
|
||||
kfree(swd);
|
||||
error_kzalloc:
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue