{
        struct video_device *vfd = video_devdata(file);
        struct v4l2_queryctrl *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
 
        if (vfh && vfh->ctrl_handler)
                return v4l2_queryctrl(vfh->ctrl_handler, p);
 {
        struct video_device *vfd = video_devdata(file);
        struct v4l2_querymenu *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
 
        if (vfh && vfh->ctrl_handler)
                return v4l2_querymenu(vfh->ctrl_handler, p);
 {
        struct video_device *vfd = video_devdata(file);
        struct v4l2_control *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
        struct v4l2_ext_controls ctrls;
        struct v4l2_ext_control ctrl;
 
 {
        struct video_device *vfd = video_devdata(file);
        struct v4l2_control *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
        struct v4l2_ext_controls ctrls;
        struct v4l2_ext_control ctrl;
 
 {
        struct video_device *vfd = video_devdata(file);
        struct v4l2_ext_controls *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
 
        p->error_idx = p->count;
        if (vfh && vfh->ctrl_handler)
 {
        struct video_device *vfd = video_devdata(file);
        struct v4l2_ext_controls *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
 
        p->error_idx = p->count;
        if (vfh && vfh->ctrl_handler)
 {
        struct video_device *vfd = video_devdata(file);
        struct v4l2_ext_controls *p = arg;
-       struct v4l2_fh *vfh = fh;
+       struct v4l2_fh *vfh =
+               test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
 
        p->error_idx = p->count;
        if (vfh && vfh->ctrl_handler)