| From d23821b1196ff333e8a97647b57f55eecc2f40bd Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 26 Aug 2022 13:53:58 +0200 |
| Subject: media: v4l: subdev: Fail graciously when getting try data for NULL |
| state |
| |
| From: Sakari Ailus <sakari.ailus@linux.intel.com> |
| |
| [ Upstream commit 2ba3e38517f5a4ebf9c997168079dca01b7f9fc6 ] |
| |
| The state argument for the functions for obtaining various parts of the |
| state is NULL if it is called by drivers for active state. Fail graciously |
| in that case instead of dereferencing a NULL pointer. |
| |
| Suggested-by: Bingbu Cao <bingbu.cao@intel.com> |
| Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> |
| Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| include/media/v4l2-subdev.h | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h |
| index 95ec18c2f49c..9a476f902c42 100644 |
| --- a/include/media/v4l2-subdev.h |
| +++ b/include/media/v4l2-subdev.h |
| @@ -995,6 +995,8 @@ v4l2_subdev_get_try_format(struct v4l2_subdev *sd, |
| struct v4l2_subdev_state *state, |
| unsigned int pad) |
| { |
| + if (WARN_ON(!state)) |
| + return NULL; |
| if (WARN_ON(pad >= sd->entity.num_pads)) |
| pad = 0; |
| return &state->pads[pad].try_fmt; |
| @@ -1013,6 +1015,8 @@ v4l2_subdev_get_try_crop(struct v4l2_subdev *sd, |
| struct v4l2_subdev_state *state, |
| unsigned int pad) |
| { |
| + if (WARN_ON(!state)) |
| + return NULL; |
| if (WARN_ON(pad >= sd->entity.num_pads)) |
| pad = 0; |
| return &state->pads[pad].try_crop; |
| @@ -1031,6 +1035,8 @@ v4l2_subdev_get_try_compose(struct v4l2_subdev *sd, |
| struct v4l2_subdev_state *state, |
| unsigned int pad) |
| { |
| + if (WARN_ON(!state)) |
| + return NULL; |
| if (WARN_ON(pad >= sd->entity.num_pads)) |
| pad = 0; |
| return &state->pads[pad].try_compose; |
| -- |
| 2.35.1 |
| |