[PATCH AUTOSEL 6.18-6.1] media: video-i2c: use vb2_video_unregister_device on driver removal

From: Sasha Levin

Date: Mon Aug 31 2026 - 12:42:55 EST


From: Arash Golgol <arash.golgol@xxxxxxxxx>

[ Upstream commit 56384b486b80ce4a2bc93689aae49995f908f90d ]

The driver uses vb2_fop_release() as its file release operation, so
vb2_video_unregister_device() should be used instead of
video_unregister_device() during driver removal.

This ensures that the vb2 queue is properly disconnected before the
video device is unregistered.

Signed-off-by: Arash Golgol <arash.golgol@xxxxxxxxx>
Signed-off-by: Hans Verkuil <hverkuil+cisco@xxxxxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---

LLM Generated explanations, may be completely bogus:

The background `git log -S 'vb2_video_unregister_device'` search timed
out after ~2 minutes and produced no output (it was killed). That didn’t
affect the backport verdict — the analysis already covered the relevant
code paths, API docs, and tree state directly.

The conclusion for **6.18.y** remains **YES**: one-line fix, real
teardown bug on remove during active capture, applies cleanly.

drivers/media/i2c/video-i2c.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c
index 1eee2d4f5b40e..16ad1831e4da7 100644
--- a/drivers/media/i2c/video-i2c.c
+++ b/drivers/media/i2c/video-i2c.c
@@ -888,7 +888,7 @@ static void video_i2c_remove(struct i2c_client *client)
if (data->chip->set_power)
data->chip->set_power(data, false);

- video_unregister_device(&data->vdev);
+ vb2_video_unregister_device(&data->vdev);
}

#ifdef CONFIG_PM
--
2.53.0