Commit 031f515b authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab

[media] s5p-fimc: Avoid null pointer dereference in fimc_capture_ctrls_create()

With presence of some faults, e.g. caused by wrong platform data or
the device tree structure the IDX_SENSOR entry in the array may be NULL,
so make sure it is not dereferenced then.
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent c6c03915
...@@ -486,6 +486,7 @@ static struct vb2_ops fimc_capture_qops = { ...@@ -486,6 +486,7 @@ static struct vb2_ops fimc_capture_qops = {
int fimc_capture_ctrls_create(struct fimc_dev *fimc) int fimc_capture_ctrls_create(struct fimc_dev *fimc)
{ {
struct fimc_vid_cap *vid_cap = &fimc->vid_cap; struct fimc_vid_cap *vid_cap = &fimc->vid_cap;
struct v4l2_subdev *sensor = fimc->pipeline.subdevs[IDX_SENSOR];
int ret; int ret;
if (WARN_ON(vid_cap->ctx == NULL)) if (WARN_ON(vid_cap->ctx == NULL))
...@@ -494,11 +495,13 @@ int fimc_capture_ctrls_create(struct fimc_dev *fimc) ...@@ -494,11 +495,13 @@ int fimc_capture_ctrls_create(struct fimc_dev *fimc)
return 0; return 0;
ret = fimc_ctrls_create(vid_cap->ctx); ret = fimc_ctrls_create(vid_cap->ctx);
if (ret || vid_cap->user_subdev_api || !vid_cap->ctx->ctrls.ready)
if (ret || vid_cap->user_subdev_api || !sensor ||
!vid_cap->ctx->ctrls.ready)
return ret; return ret;
return v4l2_ctrl_add_handler(&vid_cap->ctx->ctrls.handler, return v4l2_ctrl_add_handler(&vid_cap->ctx->ctrls.handler,
fimc->pipeline.subdevs[IDX_SENSOR]->ctrl_handler, NULL); sensor->ctrl_handler, NULL);
} }
static int fimc_capture_set_default_format(struct fimc_dev *fimc); static int fimc_capture_set_default_format(struct fimc_dev *fimc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment