|
@@ -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);
|