staging: atomisp: potential underflow in atomisp_get_metadata_by_type()

Message ID 20170313123414.GB9287@mwanda (mailing list archive)
State Not Applicable, archived
Headers

Commit Message

Dan Carpenter March 13, 2017, 12:34 p.m. UTC
  md_type is an enum.  On my tests, GCC treats it as unsigned but
according to the C standard it's an implementation dependant thing so we
should check for negatives.

Fixes: a49d25364dfb ("staging/atomisp: Add support for the Intel IPU v2")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
  

Comments

Alan Cox March 13, 2017, 5:52 p.m. UTC | #1
On Mon, 2017-03-13 at 15:34 +0300, Dan Carpenter wrote:
> md_type is an enum.  On my tests, GCC treats it as unsigned but
> according to the C standard it's an implementation dependant thing so
> we
> should check for negatives.

Can do but the kernel assumes GNU C everywhere else.

Acked-by: Alan Cox <alan@linux.intel.com>

Alan
  

Patch

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
index d9a5c24633cb..0d77ebc5c865 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
@@ -3005,7 +3005,7 @@  int atomisp_get_metadata_by_type(struct atomisp_sub_device *asd, int flag,
 		return 0;
 
 	md_type = md->type;
-	if (md_type >= ATOMISP_METADATA_TYPE_NUM)
+	if (md_type < 0 || md_type >= ATOMISP_METADATA_TYPE_NUM)
 		return -EINVAL;
 
 	/* This is done in the atomisp_buf_done() */