From: Greg Kroah-Hartman Date: Mon, 17 Oct 2022 09:29:33 +0000 (+0200) Subject: drop media-v4l2-ctrls-allocate-space-for-arrays.patch from 6.0 X-Git-Tag: v5.4.219~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e2b1edbc7a10cd1ae0e351481a7c8c4ae80142c7;p=thirdparty%2Fkernel%2Fstable-queue.git drop media-v4l2-ctrls-allocate-space-for-arrays.patch from 6.0 --- diff --git a/queue-6.0/media-v4l2-ctrls-allocate-space-for-arrays.patch b/queue-6.0/media-v4l2-ctrls-allocate-space-for-arrays.patch deleted file mode 100644 index 6bc4fe56f2a..00000000000 --- a/queue-6.0/media-v4l2-ctrls-allocate-space-for-arrays.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 5cc036de01c402cf40cccf04dcb95af5e18e8313 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 11 Jul 2022 12:21:07 +0200 -Subject: media: v4l2-ctrls: allocate space for arrays - -From: Hans Verkuil - -[ Upstream commit 5f2c5c69a61dc5411d436c1a422f8a1ee195a924 ] - -Just like dynamic arrays, also allocate space for regular arrays. - -This is in preparation for allowing to change the array size from -a driver. - -Signed-off-by: Hans Verkuil -Reviewed-by: Laurent Pinchart -Signed-off-by: Mauro Carvalho Chehab -Stable-dep-of: 211f8304fa21 ("media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop") -Signed-off-by: Sasha Levin ---- - drivers/media/v4l2-core/v4l2-ctrls-api.c | 8 +++--- - drivers/media/v4l2-core/v4l2-ctrls-core.c | 33 +++++++++++------------ - include/media/v4l2-ctrls.h | 17 ++++++------ - 3 files changed, 28 insertions(+), 30 deletions(-) - -diff --git a/drivers/media/v4l2-core/v4l2-ctrls-api.c b/drivers/media/v4l2-core/v4l2-ctrls-api.c -index 50d012ba3c02..1b90bd7c4010 100644 ---- a/drivers/media/v4l2-core/v4l2-ctrls-api.c -+++ b/drivers/media/v4l2-core/v4l2-ctrls-api.c -@@ -105,8 +105,8 @@ static int user_to_new(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl) - - ctrl->is_new = 0; - if (ctrl->is_dyn_array && -- c->size > ctrl->p_dyn_alloc_elems * ctrl->elem_size) { -- void *old = ctrl->p_dyn; -+ c->size > ctrl->p_array_alloc_elems * ctrl->elem_size) { -+ void *old = ctrl->p_array; - void *tmp = kvzalloc(2 * c->size, GFP_KERNEL); - - if (!tmp) -@@ -115,8 +115,8 @@ static int user_to_new(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl) - memcpy(tmp + c->size, ctrl->p_cur.p, ctrl->elems * ctrl->elem_size); - ctrl->p_new.p = tmp; - ctrl->p_cur.p = tmp + c->size; -- ctrl->p_dyn = tmp; -- ctrl->p_dyn_alloc_elems = c->size / ctrl->elem_size; -+ ctrl->p_array = tmp; -+ ctrl->p_array_alloc_elems = c->size / ctrl->elem_size; - kvfree(old); - } - -diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2-core/v4l2-ctrls-core.c -index 1f85828d6694..9871c77f559b 100644 ---- a/drivers/media/v4l2-core/v4l2-ctrls-core.c -+++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c -@@ -1135,14 +1135,14 @@ int req_to_new(struct v4l2_ctrl_ref *ref) - - /* - * Check if the number of elements in the request is more than the -- * elements in ctrl->p_dyn. If so, attempt to realloc ctrl->p_dyn. -- * Note that p_dyn is allocated with twice the number of elements -+ * elements in ctrl->p_array. If so, attempt to realloc ctrl->p_array. -+ * Note that p_array is allocated with twice the number of elements - * in the dynamic array since it has to store both the current and - * new value of such a control. - */ -- if (ref->p_req_elems > ctrl->p_dyn_alloc_elems) { -+ if (ref->p_req_elems > ctrl->p_array_alloc_elems) { - unsigned int sz = ref->p_req_elems * ctrl->elem_size; -- void *old = ctrl->p_dyn; -+ void *old = ctrl->p_array; - void *tmp = kvzalloc(2 * sz, GFP_KERNEL); - - if (!tmp) -@@ -1151,8 +1151,8 @@ int req_to_new(struct v4l2_ctrl_ref *ref) - memcpy(tmp + sz, ctrl->p_cur.p, ctrl->elems * ctrl->elem_size); - ctrl->p_new.p = tmp; - ctrl->p_cur.p = tmp + sz; -- ctrl->p_dyn = tmp; -- ctrl->p_dyn_alloc_elems = ref->p_req_elems; -+ ctrl->p_array = tmp; -+ ctrl->p_array_alloc_elems = ref->p_req_elems; - kvfree(old); - } - -@@ -1252,7 +1252,7 @@ void v4l2_ctrl_handler_free(struct v4l2_ctrl_handler *hdl) - list_del(&ctrl->node); - list_for_each_entry_safe(sev, next_sev, &ctrl->ev_subs, node) - list_del(&sev->node); -- kvfree(ctrl->p_dyn); -+ kvfree(ctrl->p_array); - kvfree(ctrl); - } - kvfree(hdl->buckets); -@@ -1584,11 +1584,10 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, - V4L2_CTRL_FLAG_EXECUTE_ON_WRITE; - else if (type == V4L2_CTRL_TYPE_CTRL_CLASS) - flags |= V4L2_CTRL_FLAG_READ_ONLY; -- else if (!(flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) && -+ else if (!is_array && - (type == V4L2_CTRL_TYPE_INTEGER64 || - type == V4L2_CTRL_TYPE_STRING || -- type >= V4L2_CTRL_COMPOUND_TYPES || -- is_array)) -+ type >= V4L2_CTRL_COMPOUND_TYPES)) - sz_extra += 2 * tot_ctrl_size; - - if (type >= V4L2_CTRL_COMPOUND_TYPES && p_def.p_const) -@@ -1632,14 +1631,14 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, - ctrl->cur.val = ctrl->val = def; - data = &ctrl[1]; - -- if (ctrl->is_dyn_array) { -- ctrl->p_dyn_alloc_elems = elems; -- ctrl->p_dyn = kvzalloc(2 * elems * elem_size, GFP_KERNEL); -- if (!ctrl->p_dyn) { -+ if (ctrl->is_array) { -+ ctrl->p_array_alloc_elems = elems; -+ ctrl->p_array = kvzalloc(2 * elems * elem_size, GFP_KERNEL); -+ if (!ctrl->p_array) { - kvfree(ctrl); - return NULL; - } -- data = ctrl->p_dyn; -+ data = ctrl->p_array; - } - - if (!ctrl->is_int) { -@@ -1651,7 +1650,7 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, - } - - if (type >= V4L2_CTRL_COMPOUND_TYPES && p_def.p_const) { -- if (ctrl->is_dyn_array) -+ if (ctrl->is_array) - ctrl->p_def.p = &ctrl[1]; - else - ctrl->p_def.p = ctrl->p_cur.p + tot_ctrl_size; -@@ -1664,7 +1663,7 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, - } - - if (handler_new_ref(hdl, ctrl, NULL, false, false)) { -- kvfree(ctrl->p_dyn); -+ kvfree(ctrl->p_array); - kvfree(ctrl); - return NULL; - } -diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h -index 00828a4f9404..5ddd506ae7b9 100644 ---- a/include/media/v4l2-ctrls.h -+++ b/include/media/v4l2-ctrls.h -@@ -203,7 +203,7 @@ typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv); - * @elem_size: The size in bytes of the control. - * @new_elems: The number of elements in p_new. This is the same as @elems, - * except for dynamic arrays. In that case it is in the range of -- * 1 to @p_dyn_alloc_elems. -+ * 1 to @p_array_alloc_elems. - * @dims: The size of each dimension. - * @nr_of_dims:The number of dimensions in @dims. - * @menu_skip_mask: The control's skip mask for menu controls. This makes it -@@ -227,12 +227,11 @@ typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv); - * not freed when the control is deleted. Should this be needed - * then a new internal bitfield can be added to tell the framework - * to free this pointer. -- * @p_dyn: Pointer to the dynamically allocated array. Only valid if -- * @is_dyn_array is true. -- * @p_dyn_alloc_elems: The number of elements in the dynamically allocated -- * array for both the cur and new values. So @p_dyn is actually -- * sized for 2 * @p_dyn_alloc_elems * @elem_size. Only valid if -- * @is_dyn_array is true. -+ * @p_array: Pointer to the allocated array. Only valid if @is_array is true. -+ * @p_array_alloc_elems: The number of elements in the allocated -+ * array for both the cur and new values. So @p_array is actually -+ * sized for 2 * @p_array_alloc_elems * @elem_size. Only valid if -+ * @is_array is true. - * @cur: Structure to store the current value. - * @cur.val: The control's current value, if the @type is represented via - * a u32 integer (see &enum v4l2_ctrl_type). -@@ -291,8 +290,8 @@ struct v4l2_ctrl { - }; - unsigned long flags; - void *priv; -- void *p_dyn; -- u32 p_dyn_alloc_elems; -+ void *p_array; -+ u32 p_array_alloc_elems; - s32 val; - struct { - s32 val; --- -2.35.1 - diff --git a/queue-6.0/series b/queue-6.0/series index 172184663fd..2ad3d2d50a4 100644 --- a/queue-6.0/series +++ b/queue-6.0/series @@ -505,7 +505,6 @@ hsi-omap_ssi-fix-refcount-leak-in-ssi_probe.patch hsi-omap_ssi_port-fix-dma_map_sg-error-check.patch clk-gcc-sc8280xp-keep-pcie-power-domains-always-on.patch clk-qcom-gcc-sdm660-use-floor-ops-for-sdcc1-clock.patch -media-v4l2-ctrls-allocate-space-for-arrays.patch media-exynos4-is-fimc-is-add-of_node_put-when-breaki.patch media-tm6000-fix-unused-value-in-vidioc_try_fmt_vid_.patch media-airspy-fix-memory-leak-in-airspy-probe.patch