aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2007-09-17 04:13:45 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-01-25 16:01:28 -0500
commita2e521e85c04af3511af3ea8971efb4ef8bde533 (patch)
tree3c729c9d2ba71de8620671c4d48ca28b5c2e304b
parent188f3457c21ac7869005021b56b4578293c644bb (diff)
V4L/DVB (6466): v4l2-i2c-drv: first call remove, then detach client
The remove driver function expects that the client is still attached to the driver, so do the detach after calling remove(). Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r--include/media/v4l2-i2c-drv-legacy.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/media/v4l2-i2c-drv-legacy.h b/include/media/v4l2-i2c-drv-legacy.h
index 433c984eefa5..241854229d6f 100644
--- a/include/media/v4l2-i2c-drv-legacy.h
+++ b/include/media/v4l2-i2c-drv-legacy.h
@@ -58,12 +58,14 @@ static int v4l2_i2c_drv_probe_legacy(struct i2c_adapter *adapter)
58 58
59static int v4l2_i2c_drv_detach_legacy(struct i2c_client *client) 59static int v4l2_i2c_drv_detach_legacy(struct i2c_client *client)
60{ 60{
61 int err = i2c_detach_client(client); 61 int err;
62 62
63 if (err)
64 return err;
65 if (v4l2_i2c_data.remove) 63 if (v4l2_i2c_data.remove)
66 v4l2_i2c_data.remove(client); 64 v4l2_i2c_data.remove(client);
65
66 err = i2c_detach_client(client);
67 if (err)
68 return err;
67 kfree(client); 69 kfree(client);
68 70
69 return 0; 71 return 0;