summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorCengiz Can <cengiz@kernel.wtf>2020-08-02 00:01:02 +0200
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-09-03 11:01:18 +0200
commit9b734bb9e7c689217e3025d0a512bf06e3b6ecd4 (patch)
tree698c43e8e8fee5135c7131c197f72fdaf48d56da /drivers
parentmedia: atomisp: mt9m114: replace fixed function names (diff)
downloadlinux-9b734bb9e7c689217e3025d0a512bf06e3b6ecd4.tar.xz
linux-9b734bb9e7c689217e3025d0a512bf06e3b6ecd4.zip
media: atomisp: move null check to earlier point
`find_gmin_subdev()` that returns a pointer to `struct gmin_subdev` can return NULL. In `gmin_v2p8_ctrl()` there's a call to this function but the possibility of a NULL was not checked before its being dereferenced, i.e.: /* Acquired here --------v */ struct gmin_subdev *gs = find_gmin_subdev(subdev); /* v------Dereferenced here */ if (gs->v2p8_gpio >= 0) { ... } With this change we're null checking `find_gmin_subdev()` result and we return an error if that's the case. We also WARN() for the sake of debugging. Signed-off-by: Cengiz Can <cengiz@kernel.wtf> Reported-by: Coverity Static Analyzer CID 1465536 Suggested-by: Mauro Carvalho Chehab <mchehab@kernel.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
index 0df46a1af5f0..1ad0246764a6 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
@@ -871,6 +871,9 @@ static int gmin_v2p8_ctrl(struct v4l2_subdev *subdev, int on)
int ret;
int value;
+ if (WARN_ON(!gs))
+ return -ENODEV;
+
if (gs->v2p8_gpio >= 0) {
pr_info("atomisp_gmin_platform: 2.8v power on GPIO %d\n",
gs->v2p8_gpio);
@@ -881,7 +884,7 @@ static int gmin_v2p8_ctrl(struct v4l2_subdev *subdev, int on)
pr_err("V2P8 GPIO initialization failed\n");
}
- if (!gs || gs->v2p8_on == on)
+ if (gs->v2p8_on == on)
return 0;
gs->v2p8_on = on;