summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArash Golgol <arash.golgol@gmail.com>2026-05-10 07:04:23 +0330
committerHans Verkuil <hverkuil+cisco@kernel.org>2026-05-12 09:39:02 +0200
commitbc4574c265ed738849e46d942617100580fcedd2 (patch)
tree55285303213239c4a8a762f2e17b0b877470d86d
parent56384b486b80ce4a2bc93689aae49995f908f90d (diff)
media: video-i2c: fix buffer queue ordering
Queued buffers are added to the tail of vid_cap_active in buffer_queue(), but the capture kthread also retrieves buffers from the tail of the list. This makes the queue behave as LIFO instead of FIFO when multiple buffers are queued. Fix this by retrieving buffers from the head of the list. Signed-off-by: Arash Golgol <arash.golgol@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
-rw-r--r--drivers/media/i2c/video-i2c.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c
index 9c47f4aaa359..2b23914717d1 100644
--- a/drivers/media/i2c/video-i2c.c
+++ b/drivers/media/i2c/video-i2c.c
@@ -454,8 +454,9 @@ static int video_i2c_thread_vid_cap(void *priv)
spin_lock(&data->slock);
if (!list_empty(&data->vid_cap_active)) {
- vid_cap_buf = list_last_entry(&data->vid_cap_active,
- struct video_i2c_buffer, list);
+ vid_cap_buf = list_first_entry(&data->vid_cap_active,
+ struct video_i2c_buffer,
+ list);
list_del(&vid_cap_buf->list);
}