diff options
-rw-r--r-- | kernel.spec | 11 | ||||
-rw-r--r-- | sources | 2 | ||||
-rw-r--r-- | uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch | 113 |
3 files changed, 5 insertions, 121 deletions
diff --git a/kernel.spec b/kernel.spec index 282938413..44056c7cd 100644 --- a/kernel.spec +++ b/kernel.spec @@ -95,7 +95,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 2 # The git snapshot level -%define gitrev 1 +%define gitrev 2 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -736,9 +736,6 @@ Patch21260: x86-Avoid-invoking-RCU-when-CPU-is-idle.patch #rhbz 804957 CVE-2012-1568 Patch21306: shlib_base_randomize.patch -#rhbz 806433 -Patch21360: uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch - #rhbz 806676 807632 Patch21385: libata-disable-runtime-pm-for-hotpluggable-port.patch @@ -1442,9 +1439,6 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch #Highbank clock functions ApplyPatch highbank-export-clock-functions.patch -#rhbz 806433 -ApplyPatch uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch - #rhbz 806676 807632 ApplyPatch libata-disable-runtime-pm-for-hotpluggable-port.patch @@ -2312,6 +2306,9 @@ fi # ||----w | # || || %changelog +* Thu Apr 12 2012 Justin M. Forbes <jforbes@redhat.com> - 3.4.0-0.rc2.git2.1 +- Linux v3.4-rc2-174-gecca5c3 + * Thu Apr 12 2012 Dennis Gilmore <dennis@ausil.us> - KALLSYMS_EXTRA_PASS=1 has to be passed in on the command line so do so only for arm @@ -1,3 +1,3 @@ 7133f5a2086a7d7ef97abac610c094f5 linux-3.3.tar.xz cc3f9ca69749eb6a92d003598c45a04b patch-3.4-rc2.xz -50f5336851ff8ad784e6caf45564c32a patch-3.4-rc2-git1.xz +53f2b39868825626da097b687cf7da58 patch-3.4-rc2-git2.xz diff --git a/uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch b/uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch deleted file mode 100644 index 5f2a1c006..000000000 --- a/uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch +++ /dev/null @@ -1,113 +0,0 @@ -@@ -, +, @@ - drivers/media/video/uvc/uvc_video.c | 50 ++++++++++++++++++++++------------ - 1 files changed, 32 insertions(+), 18 deletions(-) ---- a/drivers/media/video/uvc/uvc_video.c -+++ a/drivers/media/video/uvc/uvc_video.c -@@ -468,22 +468,30 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf, - spin_unlock_irqrestore(&stream->clock.lock, flags); - } - --static int uvc_video_clock_init(struct uvc_streaming *stream) -+static void uvc_video_clock_reset(struct uvc_streaming *stream) - { - struct uvc_clock *clock = &stream->clock; - -- spin_lock_init(&clock->lock); - clock->head = 0; - clock->count = 0; -- clock->size = 32; - clock->last_sof = -1; - clock->sof_offset = -1; -+} -+ -+static int uvc_video_clock_init(struct uvc_streaming *stream) -+{ -+ struct uvc_clock *clock = &stream->clock; -+ -+ spin_lock_init(&clock->lock); -+ clock->size = 32; - - clock->samples = kmalloc(clock->size * sizeof(*clock->samples), - GFP_KERNEL); - if (clock->samples == NULL) - return -ENOMEM; - -+ uvc_video_clock_reset(stream); -+ - return 0; - } - -@@ -1424,8 +1432,6 @@ static void uvc_uninit_video(struct uvc_streaming *stream, int free_buffers) - - if (free_buffers) - uvc_free_urb_buffers(stream); -- -- uvc_video_clock_cleanup(stream); - } - - /* -@@ -1555,10 +1561,6 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) - - uvc_video_stats_start(stream); - -- ret = uvc_video_clock_init(stream); -- if (ret < 0) -- return ret; -- - if (intf->num_altsetting > 1) { - struct usb_host_endpoint *best_ep = NULL; - unsigned int best_psize = 3 * 1024; -@@ -1683,6 +1685,8 @@ int uvc_video_resume(struct uvc_streaming *stream, int reset) - - stream->frozen = 0; - -+ uvc_video_clock_reset(stream); -+ - ret = uvc_commit_video(stream, &stream->ctrl); - if (ret < 0) { - uvc_queue_enable(&stream->queue, 0); -@@ -1819,25 +1823,35 @@ int uvc_video_enable(struct uvc_streaming *stream, int enable) - uvc_uninit_video(stream, 1); - usb_set_interface(stream->dev->udev, stream->intfnum, 0); - uvc_queue_enable(&stream->queue, 0); -+ uvc_video_clock_cleanup(stream); - return 0; - } - -- ret = uvc_queue_enable(&stream->queue, 1); -+ ret = uvc_video_clock_init(stream); - if (ret < 0) - return ret; - -+ ret = uvc_queue_enable(&stream->queue, 1); -+ if (ret < 0) -+ goto error_queue; -+ - /* Commit the streaming parameters. */ - ret = uvc_commit_video(stream, &stream->ctrl); -- if (ret < 0) { -- uvc_queue_enable(&stream->queue, 0); -- return ret; -- } -+ if (ret < 0) -+ goto error_commit; - - ret = uvc_init_video(stream, GFP_KERNEL); -- if (ret < 0) { -- usb_set_interface(stream->dev->udev, stream->intfnum, 0); -- uvc_queue_enable(&stream->queue, 0); -- } -+ if (ret < 0) -+ goto error_video; -+ -+ return 0; -+ -+error_video: -+ usb_set_interface(stream->dev->udev, stream->intfnum, 0); -+error_commit: -+ uvc_queue_enable(&stream->queue, 0); -+error_queue: -+ uvc_video_clock_cleanup(stream); - - return ret; - } |