In the err_put_buffers cleanup path of iio_hw_consumer_alloc(), the code
was using list_for_each_entry() to iterate through buffers while calling
iio_buffer_put() which can free the current buffer if refcount drops to 0.
The list_for_each_entry() loop macro then evaluates buf->head.next to
continue iteration, accessing the freed buffer.
Fix this by using list_for_each_entry_safe().
Fixes:
|
||
|---|---|---|
| .. | ||
| industrialio-buffer-cb.c | ||
| industrialio-buffer-dma.c | ||
| industrialio-buffer-dmaengine.c | ||
| industrialio-hw-consumer.c | ||
| industrialio-triggered-buffer.c | ||
| Kconfig | ||
| kfifo_buf.c | ||
| Makefile | ||