staging:iio: pull out demux cleanup for a particular buffer.
authorJonathan Cameron <jic23@kernel.org>
Sat, 21 Apr 2012 09:09:45 +0000 (10:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Apr 2012 18:23:38 +0000 (11:23 -0700)
This will come in handy again when we move to multiple buffers
so lets pull it out into a little utility function now.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/iio/industrialio-buffer.c

index 6c329f9..b409b95 100644 (file)
@@ -655,19 +655,25 @@ int iio_push_to_buffer(struct iio_buffer *buffer, unsigned char *data,
 }
 EXPORT_SYMBOL_GPL(iio_push_to_buffer);
 
+static void iio_buffer_demux_free(struct iio_buffer *buffer)
+{
+       struct iio_demux_table *p, *q;
+       list_for_each_entry_safe(p, q, &buffer->demux_list, l) {
+               list_del(&p->l);
+               kfree(p);
+       }
+}
+
 int iio_update_demux(struct iio_dev *indio_dev)
 {
        const struct iio_chan_spec *ch;
        struct iio_buffer *buffer = indio_dev->buffer;
        int ret, in_ind = -1, out_ind, length;
        unsigned in_loc = 0, out_loc = 0;
-       struct iio_demux_table *p, *q;
+       struct iio_demux_table *p;
 
        /* Clear out any old demux */
-       list_for_each_entry_safe(p, q, &buffer->demux_list, l) {
-               list_del(&p->l);
-               kfree(p);
-       }
+       iio_buffer_demux_free(buffer);
        kfree(buffer->demux_bounce);
        buffer->demux_bounce = NULL;
 
@@ -742,10 +748,8 @@ int iio_update_demux(struct iio_dev *indio_dev)
        return 0;
 
 error_clear_mux_table:
-       list_for_each_entry_safe(p, q, &buffer->demux_list, l) {
-               list_del(&p->l);
-               kfree(p);
-       }
+       iio_buffer_demux_free(buffer);
+
        return ret;
 }
 EXPORT_SYMBOL_GPL(iio_update_demux);