From: Greg Kroah-Hartman Date: Mon, 9 Dec 2013 00:30:56 +0000 (-0800) Subject: 3.12-stable patches X-Git-Tag: v3.4.74~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a9893f15a4896c1bd28c3e54a7348b6f1e2ebd1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.12-stable patches added patches: input-allow-deselecting-serio-drivers-even-without-config_expert.patch input-mousedev-allow-disabling-even-without-config_expert.patch iwlwifi-dvm-don-t-override-mac80211-s-queue-setting.patch tg3-avoid-double-freeing-of-rx-data-memory.patch --- diff --git a/queue-3.12/input-allow-deselecting-serio-drivers-even-without-config_expert.patch b/queue-3.12/input-allow-deselecting-serio-drivers-even-without-config_expert.patch new file mode 100644 index 00000000000..4247a4afe06 --- /dev/null +++ b/queue-3.12/input-allow-deselecting-serio-drivers-even-without-config_expert.patch @@ -0,0 +1,79 @@ +From bcd2623073e98f69f84720308db0b142c4da0bd6 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Thu, 31 Oct 2013 00:38:30 -0700 +Subject: Input: allow deselecting serio drivers even without CONFIG_EXPERT + +From: Tom Gundersen + +commit bcd2623073e98f69f84720308db0b142c4da0bd6 upstream. + +There is plenty of consumer hardware (e.g., mac books) that does not use AT +keyboards or PS/2 mice. It therefore makes sense for distro kernels to +build the related drivers as modules to avoid loading them on hardware that +does not need them. As such, these options should no longer be protected by +EXPERT. + +Moreover, building these drivers as modules gets rid of the following ugly +error during boot: + +[ 2.337745] i8042: PNP: No PS/2 controller found. Probing ports directly. +[ 3.439537] i8042: No controller found + +Signed-off-by: Tom Gundersen +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/keyboard/Kconfig | 4 ++-- + drivers/input/serio/Kconfig | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/input/keyboard/Kconfig ++++ b/drivers/input/keyboard/Kconfig +@@ -2,7 +2,7 @@ + # Input core configuration + # + menuconfig INPUT_KEYBOARD +- bool "Keyboards" if EXPERT || !X86 ++ bool "Keyboards" + default y + help + Say Y here, and a list of supported keyboards will be displayed. +@@ -67,7 +67,7 @@ config KEYBOARD_ATARI + module will be called atakbd. + + config KEYBOARD_ATKBD +- tristate "AT keyboard" if EXPERT || !X86 ++ tristate "AT keyboard" + default y + select SERIO + select SERIO_LIBPS2 +--- a/drivers/input/serio/Kconfig ++++ b/drivers/input/serio/Kconfig +@@ -2,7 +2,7 @@ + # Input core configuration + # + config SERIO +- tristate "Serial I/O support" if EXPERT || !X86 ++ tristate "Serial I/O support" + default y + help + Say Yes here if you have any input device that uses serial I/O to +@@ -19,7 +19,7 @@ config SERIO + if SERIO + + config SERIO_I8042 +- tristate "i8042 PC Keyboard controller" if EXPERT || !X86 ++ tristate "i8042 PC Keyboard controller" + default y + depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && \ + (!SUPERH || SH_CAYMAN) && !M68K && !BLACKFIN && !S390 && \ +@@ -170,7 +170,7 @@ config SERIO_MACEPS2 + module will be called maceps2. + + config SERIO_LIBPS2 +- tristate "PS/2 driver library" if EXPERT ++ tristate "PS/2 driver library" + depends on SERIO_I8042 || SERIO_I8042=n + help + Say Y here if you are using a driver for device connected diff --git a/queue-3.12/input-mousedev-allow-disabling-even-without-config_expert.patch b/queue-3.12/input-mousedev-allow-disabling-even-without-config_expert.patch new file mode 100644 index 00000000000..2ffd459e318 --- /dev/null +++ b/queue-3.12/input-mousedev-allow-disabling-even-without-config_expert.patch @@ -0,0 +1,33 @@ +From dfaaed08ecc01bd513248ba7999daf50ce028352 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Thu, 31 Oct 2013 00:44:49 -0700 +Subject: Input: mousedev - allow disabling even without CONFIG_EXPERT + +From: Tom Gundersen + +commit dfaaed08ecc01bd513248ba7999daf50ce028352 upstream. + +Moust (if not all) modern software, including X, uses /dev/eventX rather than +the legacy /dev/mouseX devices. It therefore makes sense for general-purpose +(distro) kernels to use MOUSEDV=m (or even n), so let's drop the EXPERT=y +requirement. + +Signed-off-by: Tom Gundersen +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/input/Kconfig ++++ b/drivers/input/Kconfig +@@ -80,7 +80,7 @@ config INPUT_MATRIXKMAP + comment "Userland interfaces" + + config INPUT_MOUSEDEV +- tristate "Mouse interface" if EXPERT ++ tristate "Mouse interface" + default y + help + Say Y here if you want your mouse to be accessible as char devices diff --git a/queue-3.12/iwlwifi-dvm-don-t-override-mac80211-s-queue-setting.patch b/queue-3.12/iwlwifi-dvm-don-t-override-mac80211-s-queue-setting.patch new file mode 100644 index 00000000000..edaaeeb2bba --- /dev/null +++ b/queue-3.12/iwlwifi-dvm-don-t-override-mac80211-s-queue-setting.patch @@ -0,0 +1,104 @@ +From f6b129527ca15bae29ffb9417ddaa1c9d99ffc5d Mon Sep 17 00:00:00 2001 +From: Emmanuel Grumbach +Date: Tue, 15 Oct 2013 22:04:54 +0300 +Subject: iwlwifi: dvm: don't override mac80211's queue setting + +From: Emmanuel Grumbach + +commit f6b129527ca15bae29ffb9417ddaa1c9d99ffc5d upstream. + +Since we set IEEE80211_HW_QUEUE_CONTROL, we can let +mac80211 do the queue assignement and don't need to +override its decisions. +While reassiging the same values is harmless of course, +it triggered a WARNING when iwlwifi and mac80211 came +to different conclusions. This happened when mac80211 set +IEEE80211_TX_CTL_SEND_AFTER_DTIM, but didn't route the +packet to the cab_queue because no stations were asleep. + +iwlwifi should not override mac80211's decicions for +offchannel packets and packets to be sent after DTIM, +but it should override mac80211's decision for AMPDUs +since we have a special queue for them. So for AMPDU, +we still override info->hw_queue by the AMPDU queue. + +This avoids: +------------[ cut here ]------------ +WARNING: CPU: 0 PID: 2531 at drivers/net/wireless/iwlwifi/dvm/tx.c:456 iwlagn_tx_skb+0x6c5/0x883() +Modules linked in: +CPU: 0 PID: 2531 Comm: hostapd Not tainted 3.12.0-rc5+ #1 +Hardware name: /D53427RKE, BIOS RKPPT10H.86A.0017.2013.0425.1251 04/25/2013 + 0000000000000000 0000000000000009 ffffffff8189aa62 0000000000000000 + ffffffff8105a4f2 ffff880058339a48 ffffffff815f8a04 0000000000000000 + ffff8800560097b0 0000000000000208 0000000000000000 ffff8800561a9e5e +Call Trace: + [] ? dump_stack+0x41/0x51 + [] ? warn_slowpath_common+0x78/0x90 + [] ? iwlagn_tx_skb+0x6c5/0x883 + [] ? iwlagn_tx_skb+0x6c5/0x883 + [] ? put_cred+0x15/0x15 + [] ? iwlagn_mac_tx+0x19/0x2f + [] ? __ieee80211_tx+0x226/0x29b + [] ? ieee80211_tx+0xa6/0xb5 + [] ? ieee80211_monitor_start_xmit+0x1e9/0x204 + [] ? dev_hard_start_xmit+0x271/0x3ec + [] ? sch_direct_xmit+0x66/0x164 + [] ? dev_queue_xmit+0x1e5/0x3c8 + [] ? packet_sendmsg+0xac5/0xb3d + [] ? sock_sendmsg+0x37/0x52 + [] ? __do_fault+0x338/0x36b + [] ? verify_iovec+0x44/0x94 + [] ? ___sys_sendmsg+0x1f1/0x283 + [] ? __inode_wait_for_writeback+0x67/0xae + [] ? __cache_free.isra.46+0x178/0x187 + [] ? kmem_cache_free+0x44/0x84 + [] ? dentry_kill+0x13d/0x149 + [] ? dput+0xe5/0xef + [] ? fget_light+0x2e/0x7c + [] ? __sys_sendmsg+0x39/0x57 + [] ? system_call_fastpath+0x16/0x1b +---[ end trace 1b3eb79359c1d1e6 ]--- + +Reported-by: Sander Eikelenboom +Reviewed-by: Johannes Berg +Signed-off-by: Johannes Berg +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/dvm/tx.c | 14 +++----------- + 1 file changed, 3 insertions(+), 11 deletions(-) + +--- a/drivers/net/wireless/iwlwifi/dvm/tx.c ++++ b/drivers/net/wireless/iwlwifi/dvm/tx.c +@@ -433,27 +433,19 @@ int iwlagn_tx_skb(struct iwl_priv *priv, + /* Copy MAC header from skb into command buffer */ + memcpy(tx_cmd->hdr, hdr, hdr_len); + ++ txq_id = info->hw_queue; ++ + if (is_agg) + txq_id = priv->tid_data[sta_id][tid].agg.txq_id; + else if (info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) { + /* +- * Send this frame after DTIM -- there's a special queue +- * reserved for this for contexts that support AP mode. +- */ +- txq_id = ctx->mcast_queue; +- +- /* + * The microcode will clear the more data + * bit in the last frame it transmits. + */ + hdr->frame_control |= + cpu_to_le16(IEEE80211_FCTL_MOREDATA); +- } else if (info->flags & IEEE80211_TX_CTL_TX_OFFCHAN) +- txq_id = IWL_AUX_QUEUE; +- else +- txq_id = ctx->ac_to_queue[skb_get_queue_mapping(skb)]; ++ } + +- WARN_ON_ONCE(!is_agg && txq_id != info->hw_queue); + WARN_ON_ONCE(is_agg && + priv->queue_to_mac80211[txq_id] != info->hw_queue); + diff --git a/queue-3.12/series b/queue-3.12/series index 45e2f0b0eb8..d762b9aece8 100644 --- a/queue-3.12/series +++ b/queue-3.12/series @@ -48,3 +48,7 @@ irq-enable-all-irqs-unconditionally-in-irq_resume.patch net-update-consumers-of-msg_more-to-recognize-msg_sendpage_notlast.patch x86-64-build-always-pass-in-mno-sse.patch scsi-disable-write-same-for-raid-and-virtual-host-adapter-drivers.patch +iwlwifi-dvm-don-t-override-mac80211-s-queue-setting.patch +tg3-avoid-double-freeing-of-rx-data-memory.patch +input-allow-deselecting-serio-drivers-even-without-config_expert.patch +input-mousedev-allow-disabling-even-without-config_expert.patch diff --git a/queue-3.12/tg3-avoid-double-freeing-of-rx-data-memory.patch b/queue-3.12/tg3-avoid-double-freeing-of-rx-data-memory.patch new file mode 100644 index 00000000000..af5fb26b1e2 --- /dev/null +++ b/queue-3.12/tg3-avoid-double-freeing-of-rx-data-memory.patch @@ -0,0 +1,54 @@ +From 85aec73d595b8847f9c4ea571deb127913f0d508 Mon Sep 17 00:00:00 2001 +From: Ivan Vecera +Date: Wed, 6 Nov 2013 14:02:36 +0100 +Subject: tg3: avoid double-freeing of rx data memory + +From: Ivan Vecera + +commit 85aec73d595b8847f9c4ea571deb127913f0d508 upstream. + +If build_skb fails the memory associated with the ring buffer is freed but +the ri->data member is not zeroed in this case. This causes a double-free +of this memory in tg3_free_rings->... path. The patch moves this block after +setting ri->data to NULL. +It would be nice to fix this bug also in stable >= v3.4 trees. + +Cc: Nithin Nayak Sujir +Cc: Michael Chan +Signed-off-by: Ivan Vecera +Acked-by: Michael Chan +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/broadcom/tg3.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/net/ethernet/broadcom/tg3.c ++++ b/drivers/net/ethernet/broadcom/tg3.c +@@ -6848,12 +6848,6 @@ static int tg3_rx(struct tg3_napi *tnapi + pci_unmap_single(tp->pdev, dma_addr, skb_size, + PCI_DMA_FROMDEVICE); + +- skb = build_skb(data, frag_size); +- if (!skb) { +- tg3_frag_free(frag_size != 0, data); +- goto drop_it_no_recycle; +- } +- skb_reserve(skb, TG3_RX_OFFSET(tp)); + /* Ensure that the update to the data happens + * after the usage of the old DMA mapping. + */ +@@ -6861,6 +6855,12 @@ static int tg3_rx(struct tg3_napi *tnapi + + ri->data = NULL; + ++ skb = build_skb(data, frag_size); ++ if (!skb) { ++ tg3_frag_free(frag_size != 0, data); ++ goto drop_it_no_recycle; ++ } ++ skb_reserve(skb, TG3_RX_OFFSET(tp)); + } else { + tg3_recycle_rx(tnapi, tpr, opaque_key, + desc_idx, *post_ptr);