On Fri, 1 Apr 2022 01:06:30 +0200 Jakob Koschel <jakobkoschel@xxxxxxxxx> wrote: > In preparation to limit the scope of the list iterator variable to the > list traversal loop, use a dedicated pointer to iterate through the > list [1]. > > Since that variable should not be used past the loop iteration, a > separate variable is used to 'remember the current location within the > loop'. > > To either continue iterating from that position or start a new > iteration (if the previous iteration was complete) list_prepare_entry() > is used. > > Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@xxxxxxxxxxxxxx/ [1] > Signed-off-by: Jakob Koschel <jakobkoschel@xxxxxxxxx> Hi Jakob, Series applied to the togreg branch of iio.git and pushed out as testing to let 0-day take a poke at it. Note I'll be rebasing that branch on rc1 once available before pushing it out for linux-next to pick up. Note I'm happy to add additional tags if anyone else takes a look at it. Thanks Jonathan > --- > drivers/iio/industrialio-buffer.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c > index 208b5193c621..151a77c2affd 100644 > --- a/drivers/iio/industrialio-buffer.c > +++ b/drivers/iio/industrialio-buffer.c > @@ -1059,7 +1059,7 @@ static int iio_enable_buffers(struct iio_dev *indio_dev, > struct iio_device_config *config) > { > struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); > - struct iio_buffer *buffer; > + struct iio_buffer *buffer, *tmp = NULL; > int ret; > > indio_dev->active_scan_mask = config->scan_mask; > @@ -1097,8 +1097,10 @@ static int iio_enable_buffers(struct iio_dev *indio_dev, > > list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) { > ret = iio_buffer_enable(buffer, indio_dev); > - if (ret) > + if (ret) { > + tmp = buffer; > goto err_disable_buffers; > + } > } > > if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) { > @@ -1125,6 +1127,7 @@ static int iio_enable_buffers(struct iio_dev *indio_dev, > indio_dev->pollfunc); > } > err_disable_buffers: > + buffer = list_prepare_entry(tmp, &iio_dev_opaque->buffer_list, buffer_list); > list_for_each_entry_continue_reverse(buffer, &iio_dev_opaque->buffer_list, > buffer_list) > iio_buffer_disable(buffer, indio_dev); > > base-commit: f82da161ea75dc4db21b2499e4b1facd36dab275 > -- > 2.25.1 >