aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2010-03-12 04:15:32 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-05-17 23:47:16 -0400
commit728385c4d31469b9124953f36fb42015435466c9 (patch)
tree3c761c8d14c1983a24fca0e5bbc1443a97622cf8 /drivers
parent4e1af31aaaa8cc4a5cc1d894bdf04dfc7450d47f (diff)
V4L/DVB: drivers/media/video: move dereference after NULL test
In quickcam_messenger.c, if the NULL test on uvd is needed, then the dereference should be after the NULL test. In vpif_display.c, std_info is initialized to the address of a structure field. This seems unlikely to be NULL. Test std_info->stdid instead. In saa7134-alsa.c, the function is only called from one place, where the chip argument has already been dereferenced. On the other hand, if it should be kept, then card should be initialized after it. A simplified version of the semantic match that detects this problem is as follows (http://coccinelle.lip6.fr/): // <smpl> @match exists@ expression x, E; identifier fld; @@ * x->fld ... when != \(x = E\|&x\) * x == NULL // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Muralidharan Karicheri <m-karicheri2@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/davinci/vpif_display.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c2
-rw-r--r--drivers/media/video/usbvideo/quickcam_messenger.c3
3 files changed, 3 insertions, 4 deletions
diff --git a/drivers/media/video/davinci/vpif_display.c b/drivers/media/video/davinci/vpif_display.c
index 13c3a1b97760..e5bab3d0d53f 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -384,7 +384,7 @@ static int vpif_get_std_info(struct channel_obj *ch)
384 int index; 384 int index;
385 385
386 std_info->stdid = vid_ch->stdid; 386 std_info->stdid = vid_ch->stdid;
387 if (!std_info) 387 if (!std_info->stdid)
388 return -1; 388 return -1;
389 389
390 for (index = 0; index < ARRAY_SIZE(ch_params); index++) { 390 for (index = 0; index < ARRAY_SIZE(ch_params); index++) {
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index d48c450ed77c..d3bd82ad010a 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -1011,8 +1011,6 @@ static int snd_card_saa7134_new_mixer(snd_card_saa7134_t * chip)
1011 unsigned int idx; 1011 unsigned int idx;
1012 int err, addr; 1012 int err, addr;
1013 1013
1014 if (snd_BUG_ON(!chip))
1015 return -EINVAL;
1016 strcpy(card->mixername, "SAA7134 Mixer"); 1014 strcpy(card->mixername, "SAA7134 Mixer");
1017 1015
1018 for (idx = 0; idx < ARRAY_SIZE(snd_saa7134_volume_controls); idx++) { 1016 for (idx = 0; idx < ARRAY_SIZE(snd_saa7134_volume_controls); idx++) {
diff --git a/drivers/media/video/usbvideo/quickcam_messenger.c b/drivers/media/video/usbvideo/quickcam_messenger.c
index fab48ec6c0ea..fbd665fa1979 100644
--- a/drivers/media/video/usbvideo/quickcam_messenger.c
+++ b/drivers/media/video/usbvideo/quickcam_messenger.c
@@ -693,12 +693,13 @@ static int qcm_start_data(struct uvd *uvd)
693 693
694static void qcm_stop_data(struct uvd *uvd) 694static void qcm_stop_data(struct uvd *uvd)
695{ 695{
696 struct qcm *cam = (struct qcm *) uvd->user_data; 696 struct qcm *cam;
697 int i, j; 697 int i, j;
698 int ret; 698 int ret;
699 699
700 if ((uvd == NULL) || (!uvd->streaming) || (uvd->dev == NULL)) 700 if ((uvd == NULL) || (!uvd->streaming) || (uvd->dev == NULL))
701 return; 701 return;
702 cam = (struct qcm *) uvd->user_data;
702 703
703 ret = qcm_camera_off(uvd); 704 ret = qcm_camera_off(uvd);
704 if (ret) 705 if (ret)