diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 25b00761005a..e38f41464fe4 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -132,7 +132,7 @@ struct iio_channel *iio_channel_get(const char *name, const char *channel_name) channel = kzalloc(sizeof(*channel), GFP_KERNEL); if (channel == NULL) - return ERR_PTR(-ENOMEM); + goto error_no_mem; channel->indio_dev = c->indio_dev; @@ -151,6 +151,9 @@ struct iio_channel *iio_channel_get(const char *name, const char *channel_name) iio_device_put(c->indio_dev); kfree(channel); return ERR_PTR(-EINVAL); +error_no_mem: + iio_device_put(c->indio_dev); + return ERR_PTR(-ENOMEM); } EXPORT_SYMBOL_GPL(iio_channel_get);