diff --git a/drivers/media/video/gspca/gspca.h b/drivers/media/video/gspca/gspca.h
index 449ff8e..dd15e07 100644
--- a/drivers/media/video/gspca/gspca.h
+++ b/drivers/media/video/gspca/gspca.h
@@ -174,6 +174,7 @@
 	const struct sd_desc *sd_desc;		/* subdriver description */
 	unsigned ctrl_dis;		/* disabled controls (bit map) */
 	unsigned ctrl_inac;		/* inactive controls (bit map) */
+	struct v4l2_ctrl_handler ctrl_handler;
 
 	/* autogain and exposure or gain control cluster, these are global as
 	   the autogain/exposure functions in autogain_functions.c use them */
diff --git a/drivers/media/video/gspca/mars.c b/drivers/media/video/gspca/mars.c
index 2950347..ec7b21e 100644
--- a/drivers/media/video/gspca/mars.c
+++ b/drivers/media/video/gspca/mars.c
@@ -34,7 +34,6 @@
 struct sd {
 	struct gspca_dev gspca_dev;	/* !! must be the first item */
 
-	struct v4l2_ctrl_handler ctrl_handler;
 	struct v4l2_ctrl *brightness;
 	struct v4l2_ctrl *saturation;
 	struct v4l2_ctrl *sharpness;
@@ -161,8 +160,9 @@
 
 static int mars_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
-	struct gspca_dev *gspca_dev = &sd->gspca_dev;
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
+	struct sd *sd = (struct sd *)gspca_dev;
 
 	gspca_dev->usb_err = 0;
 
@@ -179,20 +179,20 @@
 
 	switch (ctrl->id) {
 	case V4L2_CID_BRIGHTNESS:
-		setbrightness(&sd->gspca_dev, ctrl->val);
+		setbrightness(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_SATURATION:
-		setcolors(&sd->gspca_dev, ctrl->val);
+		setcolors(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_GAMMA:
-		setgamma(&sd->gspca_dev, ctrl->val);
+		setgamma(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_ILLUMINATORS_1:
-		setilluminators(&sd->gspca_dev, sd->illum_top->val,
-						sd->illum_bottom->val);
+		setilluminators(gspca_dev, sd->illum_top->val,
+					   sd->illum_bottom->val);
 		break;
 	case V4L2_CID_SHARPNESS:
-		setsharpness(&sd->gspca_dev, ctrl->val);
+		setsharpness(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
 		jpeg_set_qual(sd->jpeg_hdr, ctrl->val);
@@ -211,7 +211,7 @@
 static int sd_init_controls(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
 
 	gspca_dev->vdev.ctrl_handler = hdl;
 	v4l2_ctrl_handler_init(hdl, 7);
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index 1758ed9..ad09820 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -70,7 +70,6 @@
 struct sd {
 	struct gspca_dev gspca_dev;
 
-	struct v4l2_ctrl_handler ctrl_handler;
 	struct { /* color control cluster */
 		struct v4l2_ctrl *brightness;
 		struct v4l2_ctrl *contrast;
@@ -1694,8 +1693,9 @@
 
 static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
-	struct gspca_dev *gspca_dev = &sd->gspca_dev;
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
+	struct sd *sd = (struct sd *)gspca_dev;
 
 	gspca_dev->usb_err = 0;
 
@@ -1705,37 +1705,37 @@
 	switch (ctrl->id) {
 	/* color control cluster */
 	case V4L2_CID_BRIGHTNESS:
-		set_cmatrix(&sd->gspca_dev, sd->brightness->val,
+		set_cmatrix(gspca_dev, sd->brightness->val,
 			sd->contrast->val, sd->saturation->val, sd->hue->val);
 		break;
 	case V4L2_CID_GAMMA:
-		set_gamma(&sd->gspca_dev, ctrl->val);
+		set_gamma(gspca_dev, ctrl->val);
 		break;
 	/* blue/red balance cluster */
 	case V4L2_CID_BLUE_BALANCE:
-		set_redblue(&sd->gspca_dev, sd->blue->val, sd->red->val);
+		set_redblue(gspca_dev, sd->blue->val, sd->red->val);
 		break;
 	/* h/vflip cluster */
 	case V4L2_CID_HFLIP:
-		set_hvflip(&sd->gspca_dev, sd->hflip->val, sd->vflip->val);
+		set_hvflip(gspca_dev, sd->hflip->val, sd->vflip->val);
 		break;
 	/* standalone exposure control */
 	case V4L2_CID_EXPOSURE:
-		set_exposure(&sd->gspca_dev, ctrl->val);
+		set_exposure(gspca_dev, ctrl->val);
 		break;
 	/* standalone gain control */
 	case V4L2_CID_GAIN:
-		set_gain(&sd->gspca_dev, ctrl->val);
+		set_gain(gspca_dev, ctrl->val);
 		break;
 	/* autogain + exposure or gain control cluster */
 	case V4L2_CID_AUTOGAIN:
 		if (sd->sensor == SENSOR_SOI968)
-			set_gain(&sd->gspca_dev, sd->gain->val);
+			set_gain(gspca_dev, sd->gain->val);
 		else
-			set_exposure(&sd->gspca_dev, sd->exposure->val);
+			set_exposure(gspca_dev, sd->exposure->val);
 		break;
 	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
-		set_quality(&sd->gspca_dev, ctrl->val);
+		set_quality(gspca_dev, ctrl->val);
 		break;
 	}
 	return gspca_dev->usb_err;
@@ -1748,7 +1748,7 @@
 static int sd_init_controls(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
 
 	gspca_dev->vdev.ctrl_handler = hdl;
 	v4l2_ctrl_handler_init(hdl, 13);
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx.c b/drivers/media/video/gspca/stv06xx/stv06xx.c
index cebd615..999ec77 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx.c
@@ -268,7 +268,7 @@
 
 	PDEBUG(D_PROBE, "Initializing controls");
 
-	gspca_dev->vdev.ctrl_handler = &sd->ctrl_handler;
+	gspca_dev->vdev.ctrl_handler = &gspca_dev->ctrl_handler;
 	return sd->sensor->init_controls(sd);
 }
 
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx.h b/drivers/media/video/gspca/stv06xx/stv06xx.h
index b7cbc6b..34957a4 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx.h
+++ b/drivers/media/video/gspca/stv06xx/stv06xx.h
@@ -89,9 +89,6 @@
 	/* A pointer to the currently connected sensor */
 	const struct stv06xx_sensor *sensor;
 
-	/* Control handler */
-	struct v4l2_ctrl_handler ctrl_handler;
-
 	/* Sensor private data */
 	void *sensor_priv;
 
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c b/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c
index 74cbd38..06fa54c5e 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c
@@ -335,15 +335,16 @@
 
 static int hdcs_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
 	int err = -EINVAL;
 
 	switch (ctrl->id) {
 	case V4L2_CID_GAIN:
-		err = hdcs_set_gain(&sd->gspca_dev, ctrl->val);
+		err = hdcs_set_gain(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_EXPOSURE:
-		err = hdcs_set_exposure(&sd->gspca_dev, ctrl->val);
+		err = hdcs_set_exposure(gspca_dev, ctrl->val);
 		break;
 	}
 	return err;
@@ -355,7 +356,7 @@
 
 static int hdcs_init_controls(struct sd *sd)
 {
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler;
 
 	v4l2_ctrl_handler_init(hdl, 2);
 	v4l2_ctrl_new_std(hdl, &hdcs_ctrl_ops,
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c b/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c
index c03b13e..cdfc3d0 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c
@@ -87,24 +87,26 @@
 
 static int pb0100_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
+	struct sd *sd = (struct sd *)gspca_dev;
 	struct pb0100_ctrls *ctrls = sd->sensor_priv;
 	int err = -EINVAL;
 
 	switch (ctrl->id) {
 	case V4L2_CID_AUTOGAIN:
-		err = pb0100_set_autogain(&sd->gspca_dev, ctrl->val);
+		err = pb0100_set_autogain(gspca_dev, ctrl->val);
 		if (err)
 			break;
 		if (ctrl->val)
 			break;
-		err = pb0100_set_gain(&sd->gspca_dev, ctrls->gain->val);
+		err = pb0100_set_gain(gspca_dev, ctrls->gain->val);
 		if (err)
 			break;
-		err = pb0100_set_exposure(&sd->gspca_dev, ctrls->exposure->val);
+		err = pb0100_set_exposure(gspca_dev, ctrls->exposure->val);
 		break;
 	case V4L2_CTRL_CLASS_USER + 0x1001:
-		err = pb0100_set_autogain_target(&sd->gspca_dev, ctrl->val);
+		err = pb0100_set_autogain_target(gspca_dev, ctrl->val);
 		break;
 	}
 	return err;
@@ -116,7 +118,7 @@
 
 static int pb0100_init_controls(struct sd *sd)
 {
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler;
 	struct pb0100_ctrls *ctrls;
 	static const struct v4l2_ctrl_config autogain_target = {
 		.ops = &pb0100_ctrl_ops,
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c b/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c
index bbfe821..8a57990 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c
@@ -67,7 +67,9 @@
 
 static int st6422_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
+	struct sd *sd = (struct sd *)gspca_dev;
 	int err = -EINVAL;
 
 	switch (ctrl->id) {
@@ -98,7 +100,7 @@
 
 static int st6422_init_controls(struct sd *sd)
 {
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler;
 
 	v4l2_ctrl_handler_init(hdl, 4);
 	v4l2_ctrl_new_std(hdl, &st6422_ctrl_ops,
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c
index 1b7a68a..748e142 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c
@@ -46,21 +46,22 @@
 
 static int vv6410_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
 	int err = -EINVAL;
 
 	switch (ctrl->id) {
 	case V4L2_CID_HFLIP:
-		err = vv6410_set_hflip(&sd->gspca_dev, ctrl->val);
+		err = vv6410_set_hflip(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_VFLIP:
-		err = vv6410_set_vflip(&sd->gspca_dev, ctrl->val);
+		err = vv6410_set_vflip(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_GAIN:
-		err = vv6410_set_analog_gain(&sd->gspca_dev, ctrl->val);
+		err = vv6410_set_analog_gain(gspca_dev, ctrl->val);
 		break;
 	case V4L2_CID_EXPOSURE:
-		err = vv6410_set_exposure(&sd->gspca_dev, ctrl->val);
+		err = vv6410_set_exposure(gspca_dev, ctrl->val);
 		break;
 	}
 	return err;
@@ -91,7 +92,7 @@
 
 static int vv6410_init_controls(struct sd *sd)
 {
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler;
 
 	v4l2_ctrl_handler_init(hdl, 4);
 	v4l2_ctrl_new_std(hdl, &vv6410_ctrl_ops,
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c
index a8839fb..0d504a7 100644
--- a/drivers/media/video/gspca/zc3xx.c
+++ b/drivers/media/video/gspca/zc3xx.c
@@ -39,7 +39,6 @@
 struct sd {
 	struct gspca_dev gspca_dev;	/* !! must be the first item */
 
-	struct v4l2_ctrl_handler ctrl_handler;
 	struct { /* gamma/brightness/contrast control cluster */
 		struct v4l2_ctrl *gamma;
 		struct v4l2_ctrl *brightness;
@@ -6328,8 +6327,9 @@
 
 static int zcxx_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
-	struct gspca_dev *gspca_dev = &sd->gspca_dev;
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
+	struct sd *sd = (struct sd *)gspca_dev;
 
 	switch (ctrl->id) {
 	case V4L2_CID_AUTOGAIN:
@@ -6343,8 +6343,9 @@
 
 static int zcxx_s_ctrl(struct v4l2_ctrl *ctrl)
 {
-	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
-	struct gspca_dev *gspca_dev = &sd->gspca_dev;
+	struct gspca_dev *gspca_dev =
+		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
+	struct sd *sd = (struct sd *)gspca_dev;
 	int i, qual;
 
 	gspca_dev->usb_err = 0;
@@ -6404,7 +6405,7 @@
 static int sd_init_controls(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *)gspca_dev;
-	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
+	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
 	static const u8 gamma[SENSOR_MAX] = {
 		[SENSOR_ADCM2700] =	4,
 		[SENSOR_CS2102] =	4,
