]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Nov 2012 21:09:11 +0000 (13:09 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Nov 2012 21:09:11 +0000 (13:09 -0800)
added patches:
alsa-hda-add-new-codec-alc283-alc290-support.patch
alsa-hda-add-support-for-realtek-alc292.patch
alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch
can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch
can-peak_usb-fix-hwtstamp-assignment.patch
jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch
pm-qos-fix-wrong-error-checking-condition.patch
sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch

queue-3.4/alsa-hda-add-new-codec-alc283-alc290-support.patch [new file with mode: 0644]
queue-3.4/alsa-hda-add-support-for-realtek-alc292.patch [new file with mode: 0644]
queue-3.4/alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch [new file with mode: 0644]
queue-3.4/can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch [new file with mode: 0644]
queue-3.4/can-peak_usb-fix-hwtstamp-assignment.patch [new file with mode: 0644]
queue-3.4/jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch [new file with mode: 0644]
queue-3.4/pm-qos-fix-wrong-error-checking-condition.patch [new file with mode: 0644]
queue-3.4/series
queue-3.4/sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch [new file with mode: 0644]

diff --git a/queue-3.4/alsa-hda-add-new-codec-alc283-alc290-support.patch b/queue-3.4/alsa-hda-add-new-codec-alc283-alc290-support.patch
new file mode 100644 (file)
index 0000000..96e56a1
--- /dev/null
@@ -0,0 +1,30 @@
+From 7ff34ad80b7080fafaac8efa9ef0061708eddd51 Mon Sep 17 00:00:00 2001
+From: Kailang Yang <kailang@realtek.com>
+Date: Sat, 6 Oct 2012 17:02:30 +0200
+Subject: ALSA: hda - Add new codec ALC283 ALC290 support
+
+From: Kailang Yang <kailang@realtek.com>
+
+commit 7ff34ad80b7080fafaac8efa9ef0061708eddd51 upstream.
+
+These are compatible with standard ALC269 parser.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -7035,6 +7035,8 @@ static const struct hda_codec_preset snd
+       { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
+       { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
+       { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
++      { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 },
++      { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 },
+       { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
+         .patch = patch_alc861 },
+       { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
diff --git a/queue-3.4/alsa-hda-add-support-for-realtek-alc292.patch b/queue-3.4/alsa-hda-add-support-for-realtek-alc292.patch
new file mode 100644 (file)
index 0000000..ff7a935
--- /dev/null
@@ -0,0 +1,32 @@
+From af02dde8a609d8d071c4b31a82df811a55690a4a Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Wed, 21 Nov 2012 08:57:58 +0100
+Subject: ALSA: hda - Add support for Realtek ALC292
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit af02dde8a609d8d071c4b31a82df811a55690a4a upstream.
+
+We found a new codec ID 292, and that just a simple quirk would enable
+sound output/input on this ALC292 chip.
+
+BugLink: https://bugs.launchpad.net/bugs/1081466
+Tested-by: Acelan Kao <acelan.kao@canonical.com>
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -7038,6 +7038,7 @@ static const struct hda_codec_preset snd
+       { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
+       { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 },
+       { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 },
++      { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 },
+       { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
+         .patch = patch_alc861 },
+       { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
diff --git a/queue-3.4/alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch b/queue-3.4/alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch
new file mode 100644 (file)
index 0000000..61eab83
--- /dev/null
@@ -0,0 +1,27 @@
+From 7110005e8d5c3cd418fc4b64f9f124f004422a9a Mon Sep 17 00:00:00 2001
+From: Duncan Roe <duncan_roe@acslink.net.au>
+Date: Wed, 10 Oct 2012 14:19:50 +0200
+Subject: ALSA: hda - Fix missing beep on ASUS X43U notebook
+
+From: Duncan Roe <duncan_roe@acslink.net.au>
+
+commit 7110005e8d5c3cd418fc4b64f9f124f004422a9a upstream.
+
+Signed-off-by: Duncan Roe <duncan_roe@acslink.net.au>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -4322,6 +4322,7 @@ static void alc_auto_init_std(struct hda
+       ((spec)->beep_amp = HDA_COMPOSE_AMP_VAL(nid, 3, idx, dir))
+ static const struct snd_pci_quirk beep_white_list[] = {
++      SND_PCI_QUIRK(0x1043, 0x103c, "ASUS", 1),
+       SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1),
+       SND_PCI_QUIRK(0x1043, 0x83ce, "EeePC", 1),
+       SND_PCI_QUIRK(0x1043, 0x831a, "EeePC", 1),
diff --git a/queue-3.4/can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch b/queue-3.4/can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch
new file mode 100644 (file)
index 0000000..5d834e3
--- /dev/null
@@ -0,0 +1,35 @@
+From 81b401100c01d2357031e874689f89bd788d13cd Mon Sep 17 00:00:00 2001
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+Date: Mon, 26 Nov 2012 22:24:23 +0100
+Subject: can: bcm: initialize ifindex for timeouts without previous frame reception
+
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+
+commit 81b401100c01d2357031e874689f89bd788d13cd upstream.
+
+Set in the rx_ifindex to pass the correct interface index in the case of a
+message timeout detection. Usually the rx_ifindex value is set at receive
+time. But when no CAN frame has been received the RX_TIMEOUT notification
+did not contain a valid value.
+
+Reported-by: Andre Naujoks <nautsch2@googlemail.com>
+Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/can/bcm.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/net/can/bcm.c
++++ b/net/can/bcm.c
+@@ -1084,6 +1084,9 @@ static int bcm_rx_setup(struct bcm_msg_h
+               op->sk = sk;
+               op->ifindex = ifindex;
++              /* ifindex for timeout events w/o previous frame reception */
++              op->rx_ifindex = ifindex;
++
+               /* initialize uninitialized (kzalloc) structure */
+               hrtimer_init(&op->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+               op->timer.function = bcm_rx_timeout_handler;
diff --git a/queue-3.4/can-peak_usb-fix-hwtstamp-assignment.patch b/queue-3.4/can-peak_usb-fix-hwtstamp-assignment.patch
new file mode 100644 (file)
index 0000000..0d2d358
--- /dev/null
@@ -0,0 +1,95 @@
+From c9faaa09e2a1335678f09c70a0d0eda095564bab Mon Sep 17 00:00:00 2001
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+Date: Wed, 21 Nov 2012 22:43:59 +0100
+Subject: can: peak_usb: fix hwtstamp assignment
+
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+
+commit c9faaa09e2a1335678f09c70a0d0eda095564bab upstream.
+
+The skb->tstamp is set to the hardware timestamp when available in the USB
+urb message. This leads to user visible timestamps which contain the 'uptime'
+of the USB adapter - and not the usual system generated timestamp.
+
+Fix this wrong assignment by applying the available hardware timestamp to the
+skb_shared_hwtstamps data structure - which is intended for this purpose.
+
+Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/can/usb/peak_usb/pcan_usb.c     |    8 ++++++--
+ drivers/net/can/usb/peak_usb/pcan_usb_pro.c |    8 ++++++--
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/can/usb/peak_usb/pcan_usb.c
++++ b/drivers/net/can/usb/peak_usb/pcan_usb.c
+@@ -519,8 +519,10 @@ static int pcan_usb_decode_error(struct
+       mc->pdev->dev.can.state = new_state;
+       if (status_len & PCAN_USB_STATUSLEN_TIMESTAMP) {
++              struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb);
++
+               peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv);
+-              skb->tstamp = timeval_to_ktime(tv);
++              hwts->hwtstamp = timeval_to_ktime(tv);
+       }
+       netif_rx(skb);
+@@ -605,6 +607,7 @@ static int pcan_usb_decode_data(struct p
+       struct sk_buff *skb;
+       struct can_frame *cf;
+       struct timeval tv;
++      struct skb_shared_hwtstamps *hwts;
+       skb = alloc_can_skb(mc->netdev, &cf);
+       if (!skb)
+@@ -652,7 +655,8 @@ static int pcan_usb_decode_data(struct p
+       /* convert timestamp into kernel time */
+       peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv);
+-      skb->tstamp = timeval_to_ktime(tv);
++      hwts = skb_hwtstamps(skb);
++      hwts->hwtstamp = timeval_to_ktime(tv);
+       /* push the skb */
+       netif_rx(skb);
+--- a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
++++ b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
+@@ -532,6 +532,7 @@ static int pcan_usb_pro_handle_canmsg(st
+       struct can_frame *can_frame;
+       struct sk_buff *skb;
+       struct timeval tv;
++      struct skb_shared_hwtstamps *hwts;
+       skb = alloc_can_skb(netdev, &can_frame);
+       if (!skb)
+@@ -549,7 +550,8 @@ static int pcan_usb_pro_handle_canmsg(st
+               memcpy(can_frame->data, rx->data, can_frame->can_dlc);
+       peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(rx->ts32), &tv);
+-      skb->tstamp = timeval_to_ktime(tv);
++      hwts = skb_hwtstamps(skb);
++      hwts->hwtstamp = timeval_to_ktime(tv);
+       netif_rx(skb);
+       netdev->stats.rx_packets++;
+@@ -570,6 +572,7 @@ static int pcan_usb_pro_handle_error(str
+       u8 err_mask = 0;
+       struct sk_buff *skb;
+       struct timeval tv;
++      struct skb_shared_hwtstamps *hwts;
+       /* nothing should be sent while in BUS_OFF state */
+       if (dev->can.state == CAN_STATE_BUS_OFF)
+@@ -664,7 +667,8 @@ static int pcan_usb_pro_handle_error(str
+       dev->can.state = new_state;
+       peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(er->ts32), &tv);
+-      skb->tstamp = timeval_to_ktime(tv);
++      hwts = skb_hwtstamps(skb);
++      hwts->hwtstamp = timeval_to_ktime(tv);
+       netif_rx(skb);
+       netdev->stats.rx_packets++;
+       netdev->stats.rx_bytes += can_frame->can_dlc;
diff --git a/queue-3.4/jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch b/queue-3.4/jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch
new file mode 100644 (file)
index 0000000..c661c36
--- /dev/null
@@ -0,0 +1,38 @@
+From 25389bb207987b5774182f763b9fb65ff08761c8 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Fri, 23 Nov 2012 14:03:04 +0100
+Subject: jbd: Fix lock ordering bug in journal_unmap_buffer()
+
+From: Jan Kara <jack@suse.cz>
+
+commit 25389bb207987b5774182f763b9fb65ff08761c8 upstream.
+
+Commit 09e05d48 introduced a wait for transaction commit into
+journal_unmap_buffer() in the case we are truncating a buffer undergoing commit
+in the page stradding i_size on a filesystem with blocksize < pagesize. Sadly
+we forgot to drop buffer lock before waiting for transaction commit and thus
+deadlock is possible when kjournald wants to lock the buffer.
+
+Fix the problem by dropping the buffer lock before waiting for transaction
+commit. Since we are still holding page lock (and that is OK), buffer cannot
+disappear under us.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/jbd/transaction.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/jbd/transaction.c
++++ b/fs/jbd/transaction.c
+@@ -1963,7 +1963,9 @@ retry:
+                       spin_unlock(&journal->j_list_lock);
+                       jbd_unlock_bh_state(bh);
+                       spin_unlock(&journal->j_state_lock);
++                      unlock_buffer(bh);
+                       log_wait_commit(journal, tid);
++                      lock_buffer(bh);
+                       goto retry;
+               }
+               /*
diff --git a/queue-3.4/pm-qos-fix-wrong-error-checking-condition.patch b/queue-3.4/pm-qos-fix-wrong-error-checking-condition.patch
new file mode 100644 (file)
index 0000000..8f4f823
--- /dev/null
@@ -0,0 +1,36 @@
+From a7227a0faa117d0bc532aea546ae5ac5f89e8ed7 Mon Sep 17 00:00:00 2001
+From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Date: Fri, 23 Nov 2012 20:55:06 +0100
+Subject: PM / QoS: fix wrong error-checking condition
+
+From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+
+commit a7227a0faa117d0bc532aea546ae5ac5f89e8ed7 upstream.
+
+dev_pm_qos_add_request() can return 0, 1, or a negative error code,
+therefore the correct error test is "if (error < 0)." Checking just for
+non-zero return code leads to erroneous setting of the req->dev pointer
+to NULL, which then leads to a repeated call to
+dev_pm_qos_add_ancestor_request() in st1232_ts_irq_handler(). This in turn
+leads to an Oops, when the I2C host adapter is unloaded and reloaded again
+because of the inconsistent state of its QoS request list.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/power/qos.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/power/qos.c
++++ b/drivers/base/power/qos.c
+@@ -446,7 +446,7 @@ int dev_pm_qos_add_ancestor_request(stru
+       if (ancestor)
+               error = dev_pm_qos_add_request(ancestor, req, value);
+-      if (error)
++      if (error < 0)
+               req->dev = NULL;
+       return error;
index 8d0cc33a31e9be7ebf264eb6f1d6b4ac5e2ce53b..f60b5f472ec7908dfd6e0edea2d348b37f1978ca 100644 (file)
@@ -28,3 +28,11 @@ dm-fix-deadlock-with-request-based-dm-and-queue-request_fn-recursion.patch
 futex-avoid-wake_futex-for-a-pi-futex_q.patch
 mac80211-deinitialize-ibss-internals-after-emptiness-check.patch
 radeon-add-agpmode-1-quirk-for-rv250.patch
+can-peak_usb-fix-hwtstamp-assignment.patch
+can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch
+jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch
+sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch
+pm-qos-fix-wrong-error-checking-condition.patch
+alsa-hda-add-new-codec-alc283-alc290-support.patch
+alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch
+alsa-hda-add-support-for-realtek-alc292.patch
diff --git a/queue-3.4/sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch b/queue-3.4/sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch
new file mode 100644 (file)
index 0000000..702b48f
--- /dev/null
@@ -0,0 +1,39 @@
+From fae2ae2a900a5c7bb385fe4075f343e7e2d5daa2 Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Sun, 18 Nov 2012 22:27:03 -0500
+Subject: sparc64: not any error from do_sigaltstack() should fail rt_sigreturn()
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit fae2ae2a900a5c7bb385fe4075f343e7e2d5daa2 upstream.
+
+If a signal handler is executed on altstack and another signal comes,
+we will end up with rt_sigreturn() on return from the second handler
+getting -EPERM from do_sigaltstack().  It's perfectly OK, since we
+are not asking to change the settings; in fact, they couldn't have been
+changed during the second handler execution exactly because we'd been
+on altstack all along.  64bit sigreturn on sparc treats any error from
+do_sigaltstack() as "SIGSEGV now"; we need to switch to the same semantics
+we are using on other architectures.
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/sparc/kernel/signal_64.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/arch/sparc/kernel/signal_64.c
++++ b/arch/sparc/kernel/signal_64.c
+@@ -309,9 +309,7 @@ void do_rt_sigreturn(struct pt_regs *reg
+               err |= restore_fpu_state(regs, fpu_save);
+       err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t));
+-      err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf);
+-
+-      if (err)
++      if (err || do_sigaltstack(&sf->stack, NULL, (unsigned long)sf) == -EFAULT)
+               goto segv;
+       err |= __get_user(rwin_save, &sf->rwin_save);