Skip to contentSkip to conversation

iio:callback buffer: free the scan_mask

PATCH Applied Jonathan Cameron 1 participant 2 messages May 22, 2013 – Jun 2, 2013 IIO

lore
Share & tools
lore

Jonathan Cameron

author maintainer
#0 lore raw

PATCH 1/1 iio:callback buffer: free the scan_mask

---
As per original discussion I've now put together a minimal patch. The rework suggested was reasonable but had no place in a fix patch.

 drivers/iio/buffer_cb.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/iio/buffer_cb.c +4 -1
index 9201022..9d19ba7 100644
@@ -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);
 }
Signature · 1 line
1.8.2.3
author maintainer Applied
#1 lore raw
Quoted 2 lines · Jonathan Cameron

Applied to fixes-togreg branch of iio.git

Sometimes I think no one cares, then I remember that there are no in tree users of this code so probably no one does ;)

Quoted 38 lines

---
As per original discussion I've now put together a minimal patch. The rework suggested was reasonable but had no place in a fix patch.

 drivers/iio/buffer_cb.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/iio/buffer_cb.c +4 -1
index 9201022..9d19ba7 100644
@@ -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);
 }