Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c6ee53c authored by Hans de Goede's avatar Hans de Goede Committed by Linus Torvalds
Browse files

gspca_sn9c20x: Fix NULL pointer dereference



Don't call v4l2_ctrl_g_ctrl on ctrls which the model cam in question
does not have.

Reported-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
[ Taken directly, since Mauro is on vacation ]
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c5e43b83
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -2070,8 +2070,11 @@ static int sd_start(struct gspca_dev *gspca_dev)
	set_gamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
	set_redblue(gspca_dev, v4l2_ctrl_g_ctrl(sd->blue),
			v4l2_ctrl_g_ctrl(sd->red));
	if (sd->gain)
		set_gain(gspca_dev, v4l2_ctrl_g_ctrl(sd->gain));
	if (sd->exposure)
		set_exposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure));
	if (sd->hflip)
		set_hvflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->hflip),
				v4l2_ctrl_g_ctrl(sd->vflip));

@@ -2176,7 +2179,7 @@ static void sd_dqcallback(struct gspca_dev *gspca_dev)
	struct sd *sd = (struct sd *) gspca_dev;
	int avg_lum;

	if (!v4l2_ctrl_g_ctrl(sd->autogain))
	if (sd->autogain == NULL || !v4l2_ctrl_g_ctrl(sd->autogain))
		return;

	avg_lum = atomic_read(&sd->avg_lum);