From: Hans Verkuil <hans.verkuil@xxxxxxxxx> Add a refcount and is_request bool to struct v4l2_ctrl_handler: this is used to refcount a handler that represents a request. Add a p_req field to struct v4l2_ctrl_ref that will store the request value. Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxxxx> --- drivers/media/v4l2-core/v4l2-ctrls.c | 1 + include/media/v4l2-ctrls.h | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index 5c705f5dde9b..eac70598635d 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c @@ -1761,6 +1761,7 @@ int v4l2_ctrl_handler_init_class(struct v4l2_ctrl_handler *hdl, sizeof(hdl->buckets[0]), GFP_KERNEL | __GFP_ZERO); hdl->error = hdl->buckets ? 0 : -ENOMEM; + hdl->is_request = false; return hdl->error; } EXPORT_SYMBOL(v4l2_ctrl_handler_init_class); diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index 96f5c63c12d0..bcabbf8a44b5 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h @@ -18,6 +18,7 @@ #define _V4L2_CTRLS_H #include <linux/list.h> +#include <linux/kref.h> #include <linux/mutex.h> #include <linux/videodev2.h> @@ -257,6 +258,7 @@ struct v4l2_ctrl_ref { struct v4l2_ctrl_ref *next; struct v4l2_ctrl *ctrl; struct v4l2_ctrl_helper *helper; + union v4l2_ctrl_ptr p_req; bool from_other_dev; }; @@ -292,7 +294,9 @@ struct v4l2_ctrl_handler { v4l2_ctrl_notify_fnc notify; void *notify_priv; u16 nr_of_buckets; + bool is_request; int error; + struct kref ref; }; /** -- 2.16.1.291.g4437f3f132-goog