summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBingbu Cao <bingbu.cao@intel.com>2024-05-29 14:43:21 +0800
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2024-05-30 16:34:59 +0200
commitffb9072bce200a4d004006e8b40c366933cf517b (patch)
treeffcbc987deb238a02cfe5e1d45471cf92dbcb7c6
parent54880795b494e6557b47fe3cf3f21f2f54c2aa68 (diff)
media: intel/ipu6: add csi2 port sanity check in notifier bound
Invalid csi2 port will break the isys notifier bound ops as it is trying to access an invalid csi2 sub-device instance based on the port. It will trigger a mc warning, and it will cause the sensor driver to unbound an inexistent isys csi2 and crash. Adding a csi2 port sanity check, return error to avoid such case. Fixes: f50c4ca0a820 ("media: intel/ipu6: add the main input system driver") Signed-off-by: Bingbu Cao <bingbu.cao@intel.com> [Sakari Ailus: Fix spelling of "nports" field.] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r--drivers/media/pci/intel/ipu6/ipu6-isys.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.c b/drivers/media/pci/intel/ipu6/ipu6-isys.c
index 1998b72ac07d..8b9b77719bb1 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c
@@ -678,6 +678,12 @@ static int isys_notifier_bound(struct v4l2_async_notifier *notifier,
container_of(asc, struct sensor_async_sd, asc);
int ret;
+ if (s_asd->csi2.port >= isys->pdata->ipdata->csi2.nports) {
+ dev_err(&isys->adev->auxdev.dev, "invalid csi2 port %u\n",
+ s_asd->csi2.port);
+ return -EINVAL;
+ }
+
ret = ipu_bridge_instantiate_vcm(sd->dev);
if (ret) {
dev_err(&isys->adev->auxdev.dev, "instantiate vcm failed\n");