]> xenbits.xensource.com Git - people/aperard/linux.git/commitdiff
media: go7007: add check of return value of go7007_read_addr()
authorDaniil Dulov <d.dulov@aladdin.ru>
Sun, 11 Feb 2024 15:07:05 +0000 (07:07 -0800)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:20:49 +0000 (18:20 -0400)
[ Upstream commit 0b70530ee740861f4776ff724fcc25023df1799a ]

If go7007_read_addr() returns error channel is not assigned a value.
In this case go to allocfail.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 866b8695d67e ("Staging: add the go7007 video driver")
Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/usb/go7007/go7007-usb.c

index eeb85981e02b67fcdb30307185e1a305c9a54d5e..762c13e49bfa5c76cf218dd942feb7217d4b9603 100644 (file)
@@ -1201,7 +1201,9 @@ static int go7007_usb_probe(struct usb_interface *intf,
                                u16 channel;
 
                                /* read channel number from GPIO[1:0] */
-                               go7007_read_addr(go, 0x3c81, &channel);
+                               if (go7007_read_addr(go, 0x3c81, &channel))
+                                       goto allocfail;
+
                                channel &= 0x3;
                                go->board_id = GO7007_BOARDID_ADLINK_MPG24;
                                usb->board = board = &board_adlink_mpg24;