From 0a12830893e8b111189e9019848ead054b0f85b3 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 25 Jul 2014 08:19:54 -0300 Subject: [media] solo6x10: fix potential null dereference drivers/media/pci/solo6x10/solo6x10-disp.c:221 solo_set_motion_block() error: potential null dereference 'buf'. (kzalloc returns null) Also propagate this error up the chain. Signed-off-by: Hans Verkuil Reported-by: kbuild test robot Signed-off-by: Mauro Carvalho Chehab --- drivers/media/pci/solo6x10/solo6x10-disp.c | 2 ++ drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'drivers/media/pci/solo6x10') diff --git a/drivers/media/pci/solo6x10/solo6x10-disp.c b/drivers/media/pci/solo6x10/solo6x10-disp.c index ed88ab4455a5..5ea9cac03968 100644 --- a/drivers/media/pci/solo6x10/solo6x10-disp.c +++ b/drivers/media/pci/solo6x10/solo6x10-disp.c @@ -216,6 +216,8 @@ int solo_set_motion_block(struct solo_dev *solo_dev, u8 ch, int ret = 0; buf = kzalloc(size, GFP_KERNEL); + if (buf == NULL) + return -ENOMEM; for (y = 0; y < SOLO_MOTION_SZ; y++) { for (x = 0; x < SOLO_MOTION_SZ; x++) buf[x] = cpu_to_le16(thresholds[y * SOLO_MOTION_SZ + x]); diff --git a/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c b/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c index 2e07b497a37c..28023f9f1dc7 100644 --- a/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c +++ b/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c @@ -1137,11 +1137,13 @@ static int solo_s_ctrl(struct v4l2_ctrl *ctrl) solo_enc->motion_enabled = ctrl->val > V4L2_DETECT_MD_MODE_DISABLED; if (ctrl->val) { if (solo_enc->motion_global) - solo_set_motion_threshold(solo_dev, solo_enc->ch, + err = solo_set_motion_threshold(solo_dev, solo_enc->ch, solo_enc->motion_thresh); else - solo_set_motion_block(solo_dev, solo_enc->ch, + err = solo_set_motion_block(solo_dev, solo_enc->ch, solo_enc->md_thresholds->p_cur.p_u16); + if (err) + return err; } solo_motion_toggle(solo_enc, ctrl->val); return 0; @@ -1152,8 +1154,7 @@ static int solo_s_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_OSD_TEXT: strcpy(solo_enc->osd_text, ctrl->p_new.p_char); - err = solo_osd_print(solo_enc); - return err; + return solo_osd_print(solo_enc); default: return -EINVAL; } -- cgit v1.2.3