Skip to content

Commit f44c651

Browse files
committed
Merge tag 'media/v7.0-6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media fixes from Mauro Carvalho Chehab: - uvcvideo may cause OOPS when out of memory - remove a deadlock in the ccs driver * tag 'media/v7.0-6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: media: ccs: Avoid deadlock in ccs_init_state() media: uvcvideo: Fix bug in error path of uvc_alloc_urb_buffers
2 parents 0b8bf3b + 7587fbf commit f44c651

2 files changed

Lines changed: 5 additions & 6 deletions

File tree

drivers/media/i2c/ccs/ccs-core.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3080,8 +3080,6 @@ static int ccs_init_state(struct v4l2_subdev *sd,
30803080
struct v4l2_rect *crop =
30813081
v4l2_subdev_state_get_crop(sd_state, pad);
30823082

3083-
guard(mutex)(&sensor->mutex);
3084-
30853083
ccs_get_native_size(ssd, crop);
30863084

30873085
fmt->width = crop->width;

drivers/media/usb/uvc/uvc_video.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,7 +1751,8 @@ static void uvc_video_complete(struct urb *urb)
17511751
/*
17521752
* Free transfer buffers.
17531753
*/
1754-
static void uvc_free_urb_buffers(struct uvc_streaming *stream)
1754+
static void uvc_free_urb_buffers(struct uvc_streaming *stream,
1755+
unsigned int size)
17551756
{
17561757
struct usb_device *udev = stream->dev->udev;
17571758
struct uvc_urb *uvc_urb;
@@ -1760,7 +1761,7 @@ static void uvc_free_urb_buffers(struct uvc_streaming *stream)
17601761
if (!uvc_urb->buffer)
17611762
continue;
17621763

1763-
usb_free_noncoherent(udev, stream->urb_size, uvc_urb->buffer,
1764+
usb_free_noncoherent(udev, size, uvc_urb->buffer,
17641765
uvc_stream_dir(stream), uvc_urb->sgt);
17651766
uvc_urb->buffer = NULL;
17661767
uvc_urb->sgt = NULL;
@@ -1820,7 +1821,7 @@ static int uvc_alloc_urb_buffers(struct uvc_streaming *stream,
18201821

18211822
if (!uvc_alloc_urb_buffer(stream, uvc_urb, urb_size,
18221823
gfp_flags)) {
1823-
uvc_free_urb_buffers(stream);
1824+
uvc_free_urb_buffers(stream, urb_size);
18241825
break;
18251826
}
18261827

@@ -1868,7 +1869,7 @@ static void uvc_video_stop_transfer(struct uvc_streaming *stream,
18681869
}
18691870

18701871
if (free_buffers)
1871-
uvc_free_urb_buffers(stream);
1872+
uvc_free_urb_buffers(stream, stream->urb_size);
18721873
}
18731874

18741875
/*

0 commit comments

Comments
 (0)