Sakari, Are you OK with this series? Please Ack if that's the case, so that I can merge it. Regards, Hans On 5/20/19 11:27 PM, Janusz Krzysztofik wrote: > Correctness of format type (try or active) and pad ID parameters passed > to subdevice operation callbacks is now verified only for IOCTL calls. > However, those callbacks are also used by drivers, e.g., V4L2 host > interfaces. > > Since both subdev_do_ioctl() and drivers are using v4l2_subdev_call() > macro while calling subdevice operations, move those parameter checks > from subdev_do_ioctl() to v4l2_subdev_call(). Also, add check for > non-NULL pointers, including pad config if V4L2_SUBDEV_FORMAT_TRY is > requested. > > Having that done, we can avoid taking care of those checks inside > drivers. > > Janusz Krzysztofik (3): > media: v4l2-subdev: Verify arguments in v4l2_subdev_call() > media: v4l2-subdev: Verify v4l2_subdev_call() pointer arguments > media: v4l2-subdev: Verify v4l2_subdev_call() pad config argument > > drivers/media/v4l2-core/v4l2-subdev.c | 268 +++++++++++++++++--------- > include/media/v4l2-subdev.h | 6 + > 2 files changed, 188 insertions(+), 86 deletions(-) > > Changelog: > v6->v7: > Changes suggested by Sakari - thanks! > - never succeed pad check on media entities with pad_num == 0, > - allow pad 0 on subdevies not registered as media entities. > > v5->v6: > - rename wrappers to call_something() as suggested by Sakari - thanks! > - make check_ functions inline - also on Sakari's suggestion, thanks! > - drop patch 2/4 and remove WARN_ONs from remaining patches to avoid > kernel WARNs on non-kernel bugs - thanks Hans for pointing this out! > > v4->v5: > - a few coding style and code formatting changes, > - require CONFIG_MEDIA_CONTROLLER, not CONFIG_VIDEO_V4L2_SUBDEV_API, > for a valid pad ID check, > - perform pad ID check only if at least one pad is configured so > drivers which don't configure pads are not affected if built with > CONFIG_MEDIA_CONTROLLER defined, > - issue kernel warnings on invalid parameters (new patch - 2/4), > - validate pointers before using them (new patch - 3/4). > > v3->v4: > - fix 'struct' keyword missing from patch 2/2, > - fix checkpatch reported style issue in patch 2/2 > Sorry for that. > > v2->v3: > - add patch 2/2 with pad config check, > - adjust continuation line alignments in patch 1/2 to match those > used in 2/2. > > v1->v2: > - replace the horrible macro with a structure of wrapper functions; > inspired by Hans' and Sakari's comments - thanks! >