}
 EXPORT_SYMBOL(v4l2_ctrl_fill);
 
+static u32 user_flags(const struct v4l2_ctrl *ctrl)
+{
+       u32 flags = ctrl->flags;
+
+       if (ctrl->is_ptr)
+               flags |= V4L2_CTRL_FLAG_HAS_PAYLOAD;
+
+       return flags;
+}
+
 static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 changes)
 {
        memset(ev->reserved, 0, sizeof(ev->reserved));
        ev->id = ctrl->id;
        ev->u.ctrl.changes = changes;
        ev->u.ctrl.type = ctrl->type;
-       ev->u.ctrl.flags = ctrl->flags;
+       ev->u.ctrl.flags = user_flags(ctrl);
        if (ctrl->is_ptr)
                ev->u.ctrl.value64 = 0;
        else
        else
                qc->id = ctrl->id;
        strlcpy(qc->name, ctrl->name, sizeof(qc->name));
-       qc->flags = ctrl->flags;
+       qc->flags = user_flags(ctrl);
        qc->type = ctrl->type;
-       if (ctrl->is_ptr)
-               qc->flags |= V4L2_CTRL_FLAG_HAS_PAYLOAD;
        qc->elem_size = ctrl->elem_size;
        qc->elems = ctrl->elems;
        qc->nr_of_dims = ctrl->nr_of_dims;