Message ID | 9885852d-d77e-7bfe-80d4-c4ff20443529@xs4all.nl (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [PATCHv2,for,v5.3] v4l2-subdev: fix regression in check_pad() | expand |
Hi Hans, On Sat, 29 Jun 2019, Hans Verkuil wrote: > sd->entity.graph_obj.mdev can be NULL when this function is called, and > that breaks existing drivers (rcar-vin, but probably others as well). > > Check if sd->entity.num_pads is non-zero instead since that doesn't depend > on mdev. > > Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> > Reported-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > Fixes: a8fa55078a77 ("media: v4l2-subdev: Verify arguments in v4l2_subdev_call()") > Tested-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Thanks, this fixes the following boot regression on r8a7791/koelsch: -rcar-vin e6ef0000.video: Device registered as video27 +rcar-vin e6ef0000.video: Unsupported media bus format for adv7612 13-004c +rcar-vin e6ef0000.video: Notifier registration failed +rcar-vin: probe of e6ef0000.video failed with error -22 Tested-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c index 21fb90d66bfc..25c73c13cc7e 100644 --- a/drivers/media/v4l2-core/v4l2-subdev.c +++ b/drivers/media/v4l2-core/v4l2-subdev.c @@ -124,7 +124,7 @@ static inline int check_which(__u32 which) static inline int check_pad(struct v4l2_subdev *sd, __u32 pad) { #if defined(CONFIG_MEDIA_CONTROLLER) - if (sd->entity.graph_obj.mdev) { + if (sd->entity.num_pads) { if (pad >= sd->entity.num_pads) return -EINVAL; return 0;