From 3d110825decb1671a28684a20e86fb4e600021ce Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Fri, 7 Sep 2012 08:22:32 -0400 Subject: [PATCH] Linux v3.6-rc4-128-geeea3ac --- ...Fix-URB-cancellation-at-stream-start.patch | 131 ------------------ kernel.spec | 9 +- sources | 2 +- 3 files changed, 5 insertions(+), 137 deletions(-) delete mode 100644 0001-ALSA-snd-usb-Fix-URB-cancellation-at-stream-start.patch diff --git a/0001-ALSA-snd-usb-Fix-URB-cancellation-at-stream-start.patch b/0001-ALSA-snd-usb-Fix-URB-cancellation-at-stream-start.patch deleted file mode 100644 index 031888c3c..000000000 --- a/0001-ALSA-snd-usb-Fix-URB-cancellation-at-stream-start.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 42ff3e2d34427dc4c6faa09052a2531f2e71d7d6 Mon Sep 17 00:00:00 2001 -From: Daniel Mack -Date: Wed, 29 Aug 2012 13:17:05 +0200 -Subject: [PATCH] ALSA: snd-usb: Fix URB cancellation at stream start - -Commit e9ba389c5 ("ALSA: usb-audio: Fix scheduling-while-atomic bug in -PCM capture stream") fixed a scheduling-while-atomic bug that happened -when snd_usb_endpoint_start was called from the trigger callback, which -is an atmic context. However, the patch breaks the idea of the endpoints -reference counting, which is the reason why the driver has been -refactored lately. - -Revert that commit and let snd_usb_endpoint_start() take care of the URB -cancellation again. As this function is called from both atomic and -non-atomic context, add a flag to denote whether the function may sleep. - -Signed-off-by: Daniel Mack -Cc: stable@kernel.org [3.5+] ---- - sound/usb/endpoint.c | 11 +++++++++-- - sound/usb/endpoint.h | 2 +- - sound/usb/pcm.c | 13 +++++-------- - 3 files changed, 15 insertions(+), 11 deletions(-) - -diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c -index c411812..b896c55 100644 ---- a/sound/usb/endpoint.c -+++ b/sound/usb/endpoint.c -@@ -799,7 +799,9 @@ int snd_usb_endpoint_set_params(struct snd_usb_endpoint *ep, - /** - * snd_usb_endpoint_start: start an snd_usb_endpoint - * -- * @ep: the endpoint to start -+ * @ep: the endpoint to start -+ * @can_sleep: flag indicating whether the operation is executed in -+ * non-atomic context - * - * A call to this function will increment the use count of the endpoint. - * In case it is not already running, the URBs for this endpoint will be -@@ -809,7 +811,7 @@ int snd_usb_endpoint_set_params(struct snd_usb_endpoint *ep, - * - * Returns an error if the URB submission failed, 0 in all other cases. - */ --int snd_usb_endpoint_start(struct snd_usb_endpoint *ep) -+int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, int can_sleep) - { - int err; - unsigned int i; -@@ -821,6 +823,11 @@ int snd_usb_endpoint_start(struct snd_usb_endpoint *ep) - if (++ep->use_count != 1) - return 0; - -+ /* just to be sure */ -+ deactivate_urbs(ep, 0, can_sleep); -+ if (can_sleep) -+ wait_clear_urbs(ep); -+ - ep->active_mask = 0; - ep->unlink_mask = 0; - ep->phase = 0; -diff --git a/sound/usb/endpoint.h b/sound/usb/endpoint.h -index ee2723f..a8e60c1 100644 ---- a/sound/usb/endpoint.h -+++ b/sound/usb/endpoint.h -@@ -13,7 +13,7 @@ int snd_usb_endpoint_set_params(struct snd_usb_endpoint *ep, - struct audioformat *fmt, - struct snd_usb_endpoint *sync_ep); - --int snd_usb_endpoint_start(struct snd_usb_endpoint *ep); -+int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, int can_sleep); - void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, - int force, int can_sleep, int wait); - int snd_usb_endpoint_activate(struct snd_usb_endpoint *ep); -diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c -index 62ec808..1546577 100644 ---- a/sound/usb/pcm.c -+++ b/sound/usb/pcm.c -@@ -212,7 +212,7 @@ int snd_usb_init_pitch(struct snd_usb_audio *chip, int iface, - } - } - --static int start_endpoints(struct snd_usb_substream *subs) -+static int start_endpoints(struct snd_usb_substream *subs, int can_sleep) - { - int err; - -@@ -225,7 +225,7 @@ static int start_endpoints(struct snd_usb_substream *subs) - snd_printdd(KERN_DEBUG "Starting data EP @%p\n", ep); - - ep->data_subs = subs; -- err = snd_usb_endpoint_start(ep); -+ err = snd_usb_endpoint_start(ep, can_sleep); - if (err < 0) { - clear_bit(SUBSTREAM_FLAG_DATA_EP_STARTED, &subs->flags); - return err; -@@ -239,7 +239,7 @@ static int start_endpoints(struct snd_usb_substream *subs) - snd_printdd(KERN_DEBUG "Starting sync EP @%p\n", ep); - - ep->sync_slave = subs->data_endpoint; -- err = snd_usb_endpoint_start(ep); -+ err = snd_usb_endpoint_start(ep, can_sleep); - if (err < 0) { - clear_bit(SUBSTREAM_FLAG_SYNC_EP_STARTED, &subs->flags); - return err; -@@ -544,13 +544,10 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream) - subs->last_frame_number = 0; - runtime->delay = 0; - -- /* clear the pending deactivation on the target EPs */ -- deactivate_endpoints(subs); -- - /* for playback, submit the URBs now; otherwise, the first hwptr_done - * updates for all URBs would happen at the same time when starting */ - if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK) -- return start_endpoints(subs); -+ return start_endpoints(subs, 1); - - return 0; - } -@@ -1175,7 +1172,7 @@ static int snd_usb_substream_capture_trigger(struct snd_pcm_substream *substream - - switch (cmd) { - case SNDRV_PCM_TRIGGER_START: -- err = start_endpoints(subs); -+ err = start_endpoints(subs, 0); - if (err < 0) - return err; - --- -1.7.11.4 - diff --git a/kernel.spec b/kernel.spec index c1ced1114..f3922ba5d 100644 --- a/kernel.spec +++ b/kernel.spec @@ -95,7 +95,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 4 # The git snapshot level -%define gitrev 1 +%define gitrev 2 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -759,8 +759,6 @@ Patch22067: selinux-Fix-sel_netnode_insert-suspicious-rcu-dereference.patch #rhbz 852842 Patch22068: ibmveth-Fix-alignment-of-rx-queue-bug.patch -Patch30000: 0001-ALSA-snd-usb-Fix-URB-cancellation-at-stream-start.patch - # END OF PATCH DEFINITIONS %endif @@ -1463,8 +1461,6 @@ ApplyPatch selinux-Fix-sel_netnode_insert-suspicious-rcu-dereference.patch #rhbz 852842 ApplyPatch ibmveth-Fix-alignment-of-rx-queue-bug.patch -ApplyPatch 0001-ALSA-snd-usb-Fix-URB-cancellation-at-stream-start.patch - # END OF PATCH APPLICATIONS %endif @@ -2327,6 +2323,9 @@ fi # ||----w | # || || %changelog +* Fri Sep 07 2012 Josh Boyer - 3.6.0-0.rc4.git2.1 +- Linux v3.6-rc4-128-geeea3ac + * Wed Sep 05 2012 Dave Jones - Don't create empty include/linux/autoconf.h in kernel-devel (rhbz 854689) diff --git a/sources b/sources index 0c7e61629..ef9b6d4a4 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ 24153eaaa81dedc9481ada8cd9c3b83d linux-3.5.tar.xz 85a05f267b2a883d0a444f3f2f91ec0b patch-3.6-rc4.xz -2f77d7e0612827bbcc097bcadf43a1ee patch-3.6-rc4-git1.xz +04fb4358588ac5de3921d308a7ad5137 patch-3.6-rc4-git2.xz