diff options
Diffstat (limited to 'drivers/iio/buffer_cb.c')
| -rw-r--r-- | drivers/iio/buffer_cb.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/iio/buffer_cb.c b/drivers/iio/buffer_cb.c index 9201022945e9..9d19ba74f22b 100644 --- a/drivers/iio/buffer_cb.c +++ b/drivers/iio/buffer_cb.c @@ -64,7 +64,7 @@ struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev,  	while (chan->indio_dev) {  		if (chan->indio_dev != indio_dev) {  			ret = -EINVAL; -			goto error_release_channels; +			goto error_free_scan_mask;  		}  		set_bit(chan->channel->scan_index,  			cb_buff->buffer.scan_mask); @@ -73,6 +73,8 @@ struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev,  	return cb_buff; +error_free_scan_mask: +	kfree(cb_buff->buffer.scan_mask);  error_release_channels:  	iio_channel_release_all(cb_buff->channels);  error_free_cb_buff: @@ -100,6 +102,7 @@ EXPORT_SYMBOL_GPL(iio_channel_stop_all_cb);  void iio_channel_release_all_cb(struct iio_cb_buffer *cb_buff)  { +	kfree(cb_buff->buffer.scan_mask);  	iio_channel_release_all(cb_buff->channels);  	kfree(cb_buff);  }  | 
