summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/video/v4l2-int-device.c6
-rw-r--r--linux/include/media/v4l2-int-device.h5
2 files changed, 5 insertions, 6 deletions
diff --git a/linux/drivers/media/video/v4l2-int-device.c b/linux/drivers/media/video/v4l2-int-device.c
index 42db79763..f5e58640f 100644
--- a/linux/drivers/media/video/v4l2-int-device.c
+++ b/linux/drivers/media/video/v4l2-int-device.c
@@ -58,12 +58,12 @@ static void v4l2_int_device_try_attach_all(void)
if (!try_module_get(m->module))
continue;
- if (m->u.master->attach(m, s)) {
+ s->u.slave->master = m;
+ if (m->u.master->attach(s)) {
+ s->u.slave->master = NULL;
module_put(m->module);
continue;
}
-
- s->u.slave->master = m;
}
}
}
diff --git a/linux/include/media/v4l2-int-device.h b/linux/include/media/v4l2-int-device.h
index 066ebfc4f..c8b80e0f0 100644
--- a/linux/include/media/v4l2-int-device.h
+++ b/linux/include/media/v4l2-int-device.h
@@ -44,9 +44,8 @@ enum v4l2_int_type {
struct v4l2_int_device;
struct v4l2_int_master {
- int (*attach)(struct v4l2_int_device *master,
- struct v4l2_int_device *slave);
- void (*detach)(struct v4l2_int_device *master);
+ int (*attach)(struct v4l2_int_device *slave);
+ void (*detach)(struct v4l2_int_device *slave);
};
typedef int (v4l2_int_ioctl_func)(struct v4l2_int_device *);