From 78845ba236152f85c63094d105df397fd3017532 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 29 Nov 2012 13:09:11 -0800 Subject: [PATCH] 3.4-stable patches 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 --- ...-add-new-codec-alc283-alc290-support.patch | 30 ++++++ ...a-hda-add-support-for-realtek-alc292.patch | 32 +++++++ ...x-missing-beep-on-asus-x43u-notebook.patch | 27 ++++++ ...uts-without-previous-frame-reception.patch | 35 +++++++ ...can-peak_usb-fix-hwtstamp-assignment.patch | 95 +++++++++++++++++++ ...ordering-bug-in-journal_unmap_buffer.patch | 38 ++++++++ ...s-fix-wrong-error-checking-condition.patch | 36 +++++++ queue-3.4/series | 8 ++ ...sigaltstack-should-fail-rt_sigreturn.patch | 39 ++++++++ 9 files changed, 340 insertions(+) create mode 100644 queue-3.4/alsa-hda-add-new-codec-alc283-alc290-support.patch create mode 100644 queue-3.4/alsa-hda-add-support-for-realtek-alc292.patch create mode 100644 queue-3.4/alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch create mode 100644 queue-3.4/can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch create mode 100644 queue-3.4/can-peak_usb-fix-hwtstamp-assignment.patch create mode 100644 queue-3.4/jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch create mode 100644 queue-3.4/pm-qos-fix-wrong-error-checking-condition.patch create mode 100644 queue-3.4/sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch 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 index 00000000000..96e56a176d5 --- /dev/null +++ b/queue-3.4/alsa-hda-add-new-codec-alc283-alc290-support.patch @@ -0,0 +1,30 @@ +From 7ff34ad80b7080fafaac8efa9ef0061708eddd51 Mon Sep 17 00:00:00 2001 +From: Kailang Yang +Date: Sat, 6 Oct 2012 17:02:30 +0200 +Subject: ALSA: hda - Add new codec ALC283 ALC290 support + +From: Kailang Yang + +commit 7ff34ad80b7080fafaac8efa9ef0061708eddd51 upstream. + +These are compatible with standard ALC269 parser. + +Signed-off-by: Kailang Yang +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..ff7a935165b --- /dev/null +++ b/queue-3.4/alsa-hda-add-support-for-realtek-alc292.patch @@ -0,0 +1,32 @@ +From af02dde8a609d8d071c4b31a82df811a55690a4a Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 21 Nov 2012 08:57:58 +0100 +Subject: ALSA: hda - Add support for Realtek ALC292 + +From: David Henningsson + +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 +Signed-off-by: David Henningsson +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..61eab830845 --- /dev/null +++ b/queue-3.4/alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch @@ -0,0 +1,27 @@ +From 7110005e8d5c3cd418fc4b64f9f124f004422a9a Mon Sep 17 00:00:00 2001 +From: Duncan Roe +Date: Wed, 10 Oct 2012 14:19:50 +0200 +Subject: ALSA: hda - Fix missing beep on ASUS X43U notebook + +From: Duncan Roe + +commit 7110005e8d5c3cd418fc4b64f9f124f004422a9a upstream. + +Signed-off-by: Duncan Roe +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..5d834e3a61c --- /dev/null +++ b/queue-3.4/can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch @@ -0,0 +1,35 @@ +From 81b401100c01d2357031e874689f89bd788d13cd Mon Sep 17 00:00:00 2001 +From: Oliver Hartkopp +Date: Mon, 26 Nov 2012 22:24:23 +0100 +Subject: can: bcm: initialize ifindex for timeouts without previous frame reception + +From: Oliver Hartkopp + +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 +Signed-off-by: Oliver Hartkopp +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..0d2d35815e3 --- /dev/null +++ b/queue-3.4/can-peak_usb-fix-hwtstamp-assignment.patch @@ -0,0 +1,95 @@ +From c9faaa09e2a1335678f09c70a0d0eda095564bab Mon Sep 17 00:00:00 2001 +From: Oliver Hartkopp +Date: Wed, 21 Nov 2012 22:43:59 +0100 +Subject: can: peak_usb: fix hwtstamp assignment + +From: Oliver Hartkopp + +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 +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..c661c364559 --- /dev/null +++ b/queue-3.4/jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch @@ -0,0 +1,38 @@ +From 25389bb207987b5774182f763b9fb65ff08761c8 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Fri, 23 Nov 2012 14:03:04 +0100 +Subject: jbd: Fix lock ordering bug in journal_unmap_buffer() + +From: Jan Kara + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..8f4f8230005 --- /dev/null +++ b/queue-3.4/pm-qos-fix-wrong-error-checking-condition.patch @@ -0,0 +1,36 @@ +From a7227a0faa117d0bc532aea546ae5ac5f89e8ed7 Mon Sep 17 00:00:00 2001 +From: Guennadi Liakhovetski +Date: Fri, 23 Nov 2012 20:55:06 +0100 +Subject: PM / QoS: fix wrong error-checking condition + +From: Guennadi Liakhovetski + +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 +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + 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; diff --git a/queue-3.4/series b/queue-3.4/series index 8d0cc33a31e..f60b5f472ec 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -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 index 00000000000..702b48fc209 --- /dev/null +++ b/queue-3.4/sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch @@ -0,0 +1,39 @@ +From fae2ae2a900a5c7bb385fe4075f343e7e2d5daa2 Mon Sep 17 00:00:00 2001 +From: Al Viro +Date: Sun, 18 Nov 2012 22:27:03 -0500 +Subject: sparc64: not any error from do_sigaltstack() should fail rt_sigreturn() + +From: Al Viro + +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 +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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); -- 2.47.3