summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel.spec11
-rw-r--r--sources2
-rw-r--r--uvcvideo-Fix-race-induced-crash-in-uvc_video_clock_update.patch113
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
diff --git a/sources b/sources
index 7df2d4566..192c7fe48 100644
--- a/sources
+++ b/sources
@@ -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;
- }