Skip to content

Commit

Permalink
V4L/DVB: drivers/media/video: move dereference after NULL test
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: Muralidharan Karicheri <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
Julia Lawall authored and Mauro Carvalho Chehab committed May 18, 2010
1 parent 4e1af31 commit 728385c
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 4 deletions.
2 changes: 1 addition & 1 deletion drivers/media/video/davinci/vpif_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ static int vpif_get_std_info(struct channel_obj *ch)
int index;

std_info->stdid = vid_ch->stdid;
if (!std_info)
if (!std_info->stdid)
return -1;

for (index = 0; index < ARRAY_SIZE(ch_params); index++) {
Expand Down
2 changes: 0 additions & 2 deletions drivers/media/video/saa7134/saa7134-alsa.c
Original file line number Diff line number Diff line change
Expand Up @@ -1011,8 +1011,6 @@ static int snd_card_saa7134_new_mixer(snd_card_saa7134_t * chip)
unsigned int idx;
int err, addr;

if (snd_BUG_ON(!chip))
return -EINVAL;
strcpy(card->mixername, "SAA7134 Mixer");

for (idx = 0; idx < ARRAY_SIZE(snd_saa7134_volume_controls); idx++) {
Expand Down
3 changes: 2 additions & 1 deletion drivers/media/video/usbvideo/quickcam_messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -693,12 +693,13 @@ static int qcm_start_data(struct uvd *uvd)

static void qcm_stop_data(struct uvd *uvd)
{
struct qcm *cam = (struct qcm *) uvd->user_data;
struct qcm *cam;
int i, j;
int ret;

if ((uvd == NULL) || (!uvd->streaming) || (uvd->dev == NULL))
return;
cam = (struct qcm *) uvd->user_data;

ret = qcm_camera_off(uvd);
if (ret)
Expand Down

0 comments on commit 728385c

Please sign in to comment.