media: v4l2-subdev.h: v4l2_subdev_call: use temp __sd variable
The sd argument of this macro can be a more complex expression. Since it is used 5 times in the macro it can be evaluated that many times as well. So assign it to a temp variable in the beginning and use that instead. This also avoids any potential side-effects of evaluating sd. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
5515e414f4
commit
3d769df5fc
|
@ -1093,13 +1093,14 @@ void v4l2_subdev_init(struct v4l2_subdev *sd,
|
|||
*/
|
||||
#define v4l2_subdev_call(sd, o, f, args...) \
|
||||
({ \
|
||||
struct v4l2_subdev *__sd = (sd); \
|
||||
int __result; \
|
||||
if (!(sd)) \
|
||||
if (!__sd) \
|
||||
__result = -ENODEV; \
|
||||
else if (!((sd)->ops->o && (sd)->ops->o->f)) \
|
||||
else if (!(__sd->ops->o && __sd->ops->o->f)) \
|
||||
__result = -ENOIOCTLCMD; \
|
||||
else \
|
||||
__result = (sd)->ops->o->f((sd), ##args); \
|
||||
__result = __sd->ops->o->f(__sd, ##args); \
|
||||
__result; \
|
||||
})
|
||||
|
||||
|
|
Loading…
Reference in New Issue