mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
media: v4l2-ctrls-core.c: Do not use iterator outside loop
Simplify a bit the code introducing a new variable for iterating through the control list. It also makes smatch happy: drivers/media/v4l2-core/v4l2-ctrls-api.c:1091 v4l2_query_ext_ctrl() warn: iterator used outside loop: 'ref' Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> [hverkuil: fix tiny whitespace issue in 'pos = ref': use just one space]
This commit is contained in:
parent
e932a85dae
commit
cb385548ec
@ -1052,35 +1052,40 @@ int v4l2_query_ext_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctr
|
||||
if (id >= node2id(hdl->ctrl_refs.prev)) {
|
||||
ref = NULL; /* Yes, so there is no next control */
|
||||
} else if (ref) {
|
||||
struct v4l2_ctrl_ref *pos = ref;
|
||||
|
||||
/*
|
||||
* We found a control with the given ID, so just get
|
||||
* the next valid one in the list.
|
||||
*/
|
||||
list_for_each_entry_continue(ref, &hdl->ctrl_refs, node) {
|
||||
is_compound = ref->ctrl->is_array ||
|
||||
ref->ctrl->type >= V4L2_CTRL_COMPOUND_TYPES;
|
||||
if (id < ref->ctrl->id &&
|
||||
(is_compound & mask) == match)
|
||||
ref = NULL;
|
||||
list_for_each_entry_continue(pos, &hdl->ctrl_refs, node) {
|
||||
is_compound = pos->ctrl->is_array ||
|
||||
pos->ctrl->type >= V4L2_CTRL_COMPOUND_TYPES;
|
||||
if (id < pos->ctrl->id &&
|
||||
(is_compound & mask) == match) {
|
||||
ref = pos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (&ref->node == &hdl->ctrl_refs)
|
||||
ref = NULL;
|
||||
} else {
|
||||
struct v4l2_ctrl_ref *pos;
|
||||
|
||||
/*
|
||||
* No control with the given ID exists, so start
|
||||
* searching for the next largest ID. We know there
|
||||
* is one, otherwise the first 'if' above would have
|
||||
* been true.
|
||||
*/
|
||||
list_for_each_entry(ref, &hdl->ctrl_refs, node) {
|
||||
is_compound = ref->ctrl->is_array ||
|
||||
ref->ctrl->type >= V4L2_CTRL_COMPOUND_TYPES;
|
||||
if (id < ref->ctrl->id &&
|
||||
(is_compound & mask) == match)
|
||||
list_for_each_entry(pos, &hdl->ctrl_refs, node) {
|
||||
is_compound = pos->ctrl->is_array ||
|
||||
pos->ctrl->type >= V4L2_CTRL_COMPOUND_TYPES;
|
||||
if (id < pos->ctrl->id &&
|
||||
(is_compound & mask) == match) {
|
||||
ref = pos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (&ref->node == &hdl->ctrl_refs)
|
||||
ref = NULL;
|
||||
}
|
||||
}
|
||||
mutex_unlock(hdl->lock);
|
||||
|
Loading…
Reference in New Issue
Block a user