From dfcd6af68fc687d7efab92de9b9c183ab59867cb Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Mon, 17 Sep 2007 10:13:45 +0200 Subject: v4l2-i2c-drv: first call remove, then detach client From: Hans Verkuil 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 Signed-off-by: Mauro Carvalho Chehab --- linux/include/media/v4l2-i2c-drv-legacy.h | 8 +++++--- linux/include/media/v4l2-i2c-drv.h | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) --- linux/include/media/v4l2-i2c-drv-legacy.h | 8 +++++--- linux/include/media/v4l2-i2c-drv.h | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'linux/include/media') diff --git a/linux/include/media/v4l2-i2c-drv-legacy.h b/linux/include/media/v4l2-i2c-drv-legacy.h index 451cbe71d..fa55a1479 100644 --- a/linux/include/media/v4l2-i2c-drv-legacy.h +++ b/linux/include/media/v4l2-i2c-drv-legacy.h @@ -71,12 +71,14 @@ static int v4l2_i2c_drv_probe_legacy(struct i2c_adapter *adapter) static int v4l2_i2c_drv_detach_legacy(struct i2c_client *client) { - int err = i2c_detach_client(client); + int err; - if (err) - return err; if (v4l2_i2c_data.remove) v4l2_i2c_data.remove(client); + + err = i2c_detach_client(client); + if (err) + return err; kfree(client); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) diff --git a/linux/include/media/v4l2-i2c-drv.h b/linux/include/media/v4l2-i2c-drv.h index f5bcf0926..726120399 100644 --- a/linux/include/media/v4l2-i2c-drv.h +++ b/linux/include/media/v4l2-i2c-drv.h @@ -90,12 +90,14 @@ static int v4l2_i2c_drv_probe_legacy(struct i2c_adapter *adapter) static int v4l2_i2c_drv_detach_legacy(struct i2c_client *client) { - int err = i2c_detach_client(client); + int err; - if (err) - return err; if (v4l2_i2c_data.remove) v4l2_i2c_data.remove(client); + + err = i2c_detach_client(client); + if (err) + return err; kfree(client); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -- cgit v1.2.3