]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 11 Jul 2012 00:54:32 +0000 (17:54 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 11 Jul 2012 00:54:32 +0000 (17:54 -0700)
added patches:
acpi-sysfs.c-strlen-fix.patch
acpi-x86-fix-dell-m6600-acpi-reboot-regression-via-dmi.patch
can-c_can-precedence-error-in-c_can_chip_config.patch
cfg80211-fix-potential-deadlock-in-regulatory.patch
mac80211-correct-behaviour-on-unrecognised-action-frames.patch
mtd-cafe_nand-fix-an-vs-mistake.patch
mwifiex-fix-11n-rx-packet-drop-issue.patch
oprofile-perf-use-nr_cpus-instead-or-nr_cpumask_bits-for-static-array.patch
stable-allow-merging-of-backports-for-serious-user-visible-performance-issues.patch
usb-cp210x-add-10-device-ids.patch
usb-option-add-id-for-cellient-men-200.patch
usb-option-add-usb-id-for-novatel-ovation-mc551.patch
vfs-make-o_path-file-descriptors-usable-for-fchdir.patch

14 files changed:
queue-3.0/acpi-sysfs.c-strlen-fix.patch [new file with mode: 0644]
queue-3.0/acpi-x86-fix-dell-m6600-acpi-reboot-regression-via-dmi.patch [new file with mode: 0644]
queue-3.0/can-c_can-precedence-error-in-c_can_chip_config.patch [new file with mode: 0644]
queue-3.0/cfg80211-fix-potential-deadlock-in-regulatory.patch [new file with mode: 0644]
queue-3.0/mac80211-correct-behaviour-on-unrecognised-action-frames.patch [new file with mode: 0644]
queue-3.0/mtd-cafe_nand-fix-an-vs-mistake.patch [new file with mode: 0644]
queue-3.0/mwifiex-fix-11n-rx-packet-drop-issue.patch [new file with mode: 0644]
queue-3.0/oprofile-perf-use-nr_cpus-instead-or-nr_cpumask_bits-for-static-array.patch [new file with mode: 0644]
queue-3.0/series
queue-3.0/stable-allow-merging-of-backports-for-serious-user-visible-performance-issues.patch [new file with mode: 0644]
queue-3.0/usb-cp210x-add-10-device-ids.patch [new file with mode: 0644]
queue-3.0/usb-option-add-id-for-cellient-men-200.patch [new file with mode: 0644]
queue-3.0/usb-option-add-usb-id-for-novatel-ovation-mc551.patch [new file with mode: 0644]
queue-3.0/vfs-make-o_path-file-descriptors-usable-for-fchdir.patch [new file with mode: 0644]

diff --git a/queue-3.0/acpi-sysfs.c-strlen-fix.patch b/queue-3.0/acpi-sysfs.c-strlen-fix.patch
new file mode 100644 (file)
index 0000000..b22e1b1
--- /dev/null
@@ -0,0 +1,41 @@
+From 9f132652d94c96476b0b0a8caf0c10e96ab10fa8 Mon Sep 17 00:00:00 2001
+From: Pavel Vasilyev <pavel@pavlinux.ru>
+Date: Tue, 5 Jun 2012 00:02:05 -0400
+Subject: ACPI sysfs.c strlen fix
+
+From: Pavel Vasilyev <pavel@pavlinux.ru>
+
+commit 9f132652d94c96476b0b0a8caf0c10e96ab10fa8 upstream.
+
+Current code is ignoring the last character of "enable" and "disable"
+in comparisons.
+
+https://bugzilla.kernel.org/show_bug.cgi?id=33732
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/acpi/sysfs.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/acpi/sysfs.c
++++ b/drivers/acpi/sysfs.c
+@@ -173,7 +173,7 @@ static int param_set_trace_state(const c
+ {
+       int result = 0;
+-      if (!strncmp(val, "enable", strlen("enable") - 1)) {
++      if (!strncmp(val, "enable", strlen("enable"))) {
+               result = acpi_debug_trace(trace_method_name, trace_debug_level,
+                                         trace_debug_layer, 0);
+               if (result)
+@@ -181,7 +181,7 @@ static int param_set_trace_state(const c
+               goto exit;
+       }
+-      if (!strncmp(val, "disable", strlen("disable") - 1)) {
++      if (!strncmp(val, "disable", strlen("disable"))) {
+               int name = 0;
+               result = acpi_debug_trace((char *)&name, trace_debug_level,
+                                         trace_debug_layer, 0);
diff --git a/queue-3.0/acpi-x86-fix-dell-m6600-acpi-reboot-regression-via-dmi.patch b/queue-3.0/acpi-x86-fix-dell-m6600-acpi-reboot-regression-via-dmi.patch
new file mode 100644 (file)
index 0000000..5d1c454
--- /dev/null
@@ -0,0 +1,40 @@
+From 76eb9a30db4bc8fd172f9155247264b5f2686d7b Mon Sep 17 00:00:00 2001
+From: Zhang Rui <rui.zhang@intel.com>
+Date: Mon, 20 Feb 2012 14:20:06 +0800
+Subject: ACPI, x86: fix Dell M6600 ACPI reboot regression via DMI
+
+From: Zhang Rui <rui.zhang@intel.com>
+
+commit 76eb9a30db4bc8fd172f9155247264b5f2686d7b upstream.
+
+Dell Precision M6600 is known to require PCI reboot, so add it to
+the reboot blacklist in pci_reboot_dmi_table[].
+
+https://bugzilla.kernel.org/show_bug.cgi?id=42749
+
+cc: x86@kernel.org
+Signed-off-by: Zhang Rui <rui.zhang@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/reboot.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/x86/kernel/reboot.c
++++ b/arch/x86/kernel/reboot.c
+@@ -452,6 +452,14 @@ static struct dmi_system_id __initdata p
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
+               },
+       },
++      {       /* Handle problems with rebooting on the Precision M6600. */
++              .callback = set_pci_reboot,
++              .ident = "Dell OptiPlex 990",
++              .matches = {
++                      DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
++                      DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
++              },
++      },
+       { }
+ };
diff --git a/queue-3.0/can-c_can-precedence-error-in-c_can_chip_config.patch b/queue-3.0/can-c_can-precedence-error-in-c_can_chip_config.patch
new file mode 100644 (file)
index 0000000..43d8b1c
--- /dev/null
@@ -0,0 +1,36 @@
+From d9cb9bd63eb27ac19f26a8547128c053f43a5da8 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Fri, 15 Jun 2012 00:20:44 +0000
+Subject: can: c_can: precedence error in c_can_chip_config()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit d9cb9bd63eb27ac19f26a8547128c053f43a5da8 upstream.
+
+(CAN_CTRLMODE_LISTENONLY & CAN_CTRLMODE_LOOPBACK) is (0x02 & 0x01) which
+is zero so the condition is never true.  The intent here was to test
+that both flags were set.
+
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/can/c_can/c_can.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/can/c_can/c_can.c
++++ b/drivers/net/can/c_can/c_can.c
+@@ -592,8 +592,8 @@ static void c_can_chip_config(struct net
+       priv->write_reg(priv, &priv->regs->control,
+                       CONTROL_ENABLE_AR);
+-      if (priv->can.ctrlmode & (CAN_CTRLMODE_LISTENONLY &
+-                                      CAN_CTRLMODE_LOOPBACK)) {
++      if ((priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) &&
++          (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK)) {
+               /* loopback + silent mode : useful for hot self-test */
+               priv->write_reg(priv, &priv->regs->control, CONTROL_EIE |
+                               CONTROL_SIE | CONTROL_IE | CONTROL_TEST);
diff --git a/queue-3.0/cfg80211-fix-potential-deadlock-in-regulatory.patch b/queue-3.0/cfg80211-fix-potential-deadlock-in-regulatory.patch
new file mode 100644 (file)
index 0000000..5fc8f93
--- /dev/null
@@ -0,0 +1,142 @@
+From fe20b39ec32e975f1054c0b7866c873a954adf05 Mon Sep 17 00:00:00 2001
+From: Eliad Peller <eliad@wizery.com>
+Date: Tue, 12 Jun 2012 12:53:13 +0300
+Subject: cfg80211: fix potential deadlock in regulatory
+
+From: Eliad Peller <eliad@wizery.com>
+
+commit fe20b39ec32e975f1054c0b7866c873a954adf05 upstream.
+
+reg_timeout_work() calls restore_regulatory_settings() which
+takes cfg80211_mutex.
+
+reg_set_request_processed() already holds cfg80211_mutex
+before calling cancel_delayed_work_sync(reg_timeout),
+so it might deadlock.
+
+Call the async cancel_delayed_work instead, in order
+to avoid the potential deadlock.
+
+This is the relevant lockdep warning:
+
+cfg80211: Calling CRDA for country: XX
+
+======================================================
+[ INFO: possible circular locking dependency detected ]
+3.4.0-rc5-wl+ #26 Not tainted
+-------------------------------------------------------
+kworker/0:2/1391 is trying to acquire lock:
+ (cfg80211_mutex){+.+.+.}, at: [<bf28ae00>] restore_regulatory_settings+0x34/0x418 [cfg80211]
+
+but task is already holding lock:
+ ((reg_timeout).work){+.+...}, at: [<c0059e94>] process_one_work+0x1f0/0x480
+
+which lock already depends on the new lock.
+
+the existing dependency chain (in reverse order) is:
+
+-> #2 ((reg_timeout).work){+.+...}:
+       [<c008fd44>] validate_chain+0xb94/0x10f0
+       [<c0090b68>] __lock_acquire+0x8c8/0x9b0
+       [<c0090d40>] lock_acquire+0xf0/0x114
+       [<c005b600>] wait_on_work+0x4c/0x154
+       [<c005c000>] __cancel_work_timer+0xd4/0x11c
+       [<c005c064>] cancel_delayed_work_sync+0x1c/0x20
+       [<bf28b274>] reg_set_request_processed+0x50/0x78 [cfg80211]
+       [<bf28bd84>] set_regdom+0x550/0x600 [cfg80211]
+       [<bf294cd8>] nl80211_set_reg+0x218/0x258 [cfg80211]
+       [<c03c7738>] genl_rcv_msg+0x1a8/0x1e8
+       [<c03c6a00>] netlink_rcv_skb+0x5c/0xc0
+       [<c03c7584>] genl_rcv+0x28/0x34
+       [<c03c6720>] netlink_unicast+0x15c/0x228
+       [<c03c6c7c>] netlink_sendmsg+0x218/0x298
+       [<c03933c8>] sock_sendmsg+0xa4/0xc0
+       [<c039406c>] __sys_sendmsg+0x1e4/0x268
+       [<c0394228>] sys_sendmsg+0x4c/0x70
+       [<c0013840>] ret_fast_syscall+0x0/0x3c
+
+-> #1 (reg_mutex){+.+.+.}:
+       [<c008fd44>] validate_chain+0xb94/0x10f0
+       [<c0090b68>] __lock_acquire+0x8c8/0x9b0
+       [<c0090d40>] lock_acquire+0xf0/0x114
+       [<c04734dc>] mutex_lock_nested+0x48/0x320
+       [<bf28b2cc>] reg_todo+0x30/0x538 [cfg80211]
+       [<c0059f44>] process_one_work+0x2a0/0x480
+       [<c005a4b4>] worker_thread+0x1bc/0x2bc
+       [<c0061148>] kthread+0x98/0xa4
+       [<c0014af4>] kernel_thread_exit+0x0/0x8
+
+-> #0 (cfg80211_mutex){+.+.+.}:
+       [<c008ed58>] print_circular_bug+0x68/0x2cc
+       [<c008fb28>] validate_chain+0x978/0x10f0
+       [<c0090b68>] __lock_acquire+0x8c8/0x9b0
+       [<c0090d40>] lock_acquire+0xf0/0x114
+       [<c04734dc>] mutex_lock_nested+0x48/0x320
+       [<bf28ae00>] restore_regulatory_settings+0x34/0x418 [cfg80211]
+       [<bf28b200>] reg_timeout_work+0x1c/0x20 [cfg80211]
+       [<c0059f44>] process_one_work+0x2a0/0x480
+       [<c005a4b4>] worker_thread+0x1bc/0x2bc
+       [<c0061148>] kthread+0x98/0xa4
+       [<c0014af4>] kernel_thread_exit+0x0/0x8
+
+other info that might help us debug this:
+
+Chain exists of:
+  cfg80211_mutex --> reg_mutex --> (reg_timeout).work
+
+ Possible unsafe locking scenario:
+
+       CPU0                    CPU1
+       ----                    ----
+  lock((reg_timeout).work);
+                               lock(reg_mutex);
+                               lock((reg_timeout).work);
+  lock(cfg80211_mutex);
+
+ *** DEADLOCK ***
+
+2 locks held by kworker/0:2/1391:
+ #0:  (events){.+.+.+}, at: [<c0059e94>] process_one_work+0x1f0/0x480
+ #1:  ((reg_timeout).work){+.+...}, at: [<c0059e94>] process_one_work+0x1f0/0x480
+
+stack backtrace:
+[<c001b928>] (unwind_backtrace+0x0/0x12c) from [<c0471d3c>] (dump_stack+0x20/0x24)
+[<c0471d3c>] (dump_stack+0x20/0x24) from [<c008ef70>] (print_circular_bug+0x280/0x2cc)
+[<c008ef70>] (print_circular_bug+0x280/0x2cc) from [<c008fb28>] (validate_chain+0x978/0x10f0)
+[<c008fb28>] (validate_chain+0x978/0x10f0) from [<c0090b68>] (__lock_acquire+0x8c8/0x9b0)
+[<c0090b68>] (__lock_acquire+0x8c8/0x9b0) from [<c0090d40>] (lock_acquire+0xf0/0x114)
+[<c0090d40>] (lock_acquire+0xf0/0x114) from [<c04734dc>] (mutex_lock_nested+0x48/0x320)
+[<c04734dc>] (mutex_lock_nested+0x48/0x320) from [<bf28ae00>] (restore_regulatory_settings+0x34/0x418 [cfg80211])
+[<bf28ae00>] (restore_regulatory_settings+0x34/0x418 [cfg80211]) from [<bf28b200>] (reg_timeout_work+0x1c/0x20 [cfg80211])
+[<bf28b200>] (reg_timeout_work+0x1c/0x20 [cfg80211]) from [<c0059f44>] (process_one_work+0x2a0/0x480)
+[<c0059f44>] (process_one_work+0x2a0/0x480) from [<c005a4b4>] (worker_thread+0x1bc/0x2bc)
+[<c005a4b4>] (worker_thread+0x1bc/0x2bc) from [<c0061148>] (kthread+0x98/0xa4)
+[<c0061148>] (kthread+0x98/0xa4) from [<c0014af4>] (kernel_thread_exit+0x0/0x8)
+cfg80211: Calling CRDA to update world regulatory domain
+cfg80211: World regulatory domain updated:
+cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
+cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
+cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
+cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
+cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
+cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
+
+Signed-off-by: Eliad Peller <eliad@wizery.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/wireless/reg.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -1358,7 +1358,7 @@ static void reg_set_request_processed(vo
+       spin_unlock(&reg_requests_lock);
+       if (last_request->initiator == NL80211_REGDOM_SET_BY_USER)
+-              cancel_delayed_work_sync(&reg_timeout);
++              cancel_delayed_work(&reg_timeout);
+       if (need_more_processing)
+               schedule_work(&reg_work);
diff --git a/queue-3.0/mac80211-correct-behaviour-on-unrecognised-action-frames.patch b/queue-3.0/mac80211-correct-behaviour-on-unrecognised-action-frames.patch
new file mode 100644 (file)
index 0000000..b6d2789
--- /dev/null
@@ -0,0 +1,45 @@
+From 4b5ebccc40843104d980f0714bc86bfcd5568941 Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Wed, 27 Jun 2012 15:38:56 +0200
+Subject: mac80211: correct behaviour on unrecognised action frames
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit 4b5ebccc40843104d980f0714bc86bfcd5568941 upstream.
+
+When receiving an "individually addressed" action frame, the
+receiver is required to return it to the sender. mac80211
+gets this wrong as it also returns group addressed (mcast)
+frames to the sender. Fix this and update the reference to
+the new 802.11 standards version since things were shuffled
+around significantly.
+
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/mac80211/rx.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -2291,7 +2291,7 @@ ieee80211_rx_h_action_return(struct ieee
+        * frames that we didn't handle, including returning unknown
+        * ones. For all other modes we will return them to the sender,
+        * setting the 0x80 bit in the action category, as required by
+-       * 802.11-2007 7.3.1.11.
++       * 802.11-2012 9.24.4.
+        * Newer versions of hostapd shall also use the management frame
+        * registration mechanisms, but older ones still use cooked
+        * monitor interfaces so push all frames there.
+@@ -2301,6 +2301,9 @@ ieee80211_rx_h_action_return(struct ieee
+            sdata->vif.type == NL80211_IFTYPE_AP_VLAN))
+               return RX_DROP_MONITOR;
++      if (is_multicast_ether_addr(mgmt->da))
++              return RX_DROP_MONITOR;
++
+       /* do not return rejected action frames */
+       if (mgmt->u.action.category & 0x80)
+               return RX_DROP_UNUSABLE;
diff --git a/queue-3.0/mtd-cafe_nand-fix-an-vs-mistake.patch b/queue-3.0/mtd-cafe_nand-fix-an-vs-mistake.patch
new file mode 100644 (file)
index 0000000..70acdb3
--- /dev/null
@@ -0,0 +1,37 @@
+From 48f8b641297df49021093763a3271119a84990a2 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Sat, 9 Jun 2012 19:08:25 +0300
+Subject: mtd: cafe_nand: fix an & vs | mistake
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 48f8b641297df49021093763a3271119a84990a2 upstream.
+
+The intent here was clearly to set result to true if the 0x40000000 flag
+was set.  But instead there was a | vs & typo and we always set result
+to true.
+
+Artem: check the spec at
+wiki.laptop.org/images/5/5c/88ALP01_Datasheet_July_2007.pdf
+and this fix looks correct.
+
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mtd/nand/cafe_nand.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/mtd/nand/cafe_nand.c
++++ b/drivers/mtd/nand/cafe_nand.c
+@@ -102,7 +102,7 @@ static const char *part_probes[] = { "cm
+ static int cafe_device_ready(struct mtd_info *mtd)
+ {
+       struct cafe_priv *cafe = mtd->priv;
+-      int result = !!(cafe_readl(cafe, NAND_STATUS) | 0x40000000);
++      int result = !!(cafe_readl(cafe, NAND_STATUS) & 0x40000000);
+       uint32_t irqs = cafe_readl(cafe, NAND_IRQ);
+       cafe_writel(cafe, irqs, NAND_IRQ);
diff --git a/queue-3.0/mwifiex-fix-11n-rx-packet-drop-issue.patch b/queue-3.0/mwifiex-fix-11n-rx-packet-drop-issue.patch
new file mode 100644 (file)
index 0000000..523f38b
--- /dev/null
@@ -0,0 +1,82 @@
+From 925839243dc9aa4ef25305f5afd10ed18258a4ac Mon Sep 17 00:00:00 2001
+From: Stone Piao <piaoyun@marvell.com>
+Date: Wed, 20 Jun 2012 20:21:10 -0700
+Subject: mwifiex: fix 11n rx packet drop issue
+
+From: Stone Piao <piaoyun@marvell.com>
+
+commit 925839243dc9aa4ef25305f5afd10ed18258a4ac upstream.
+
+Currently we check the sequence number of last packet received
+against start_win. If a sequence hole is detected, start_win is
+updated to next sequence number.
+
+Since the rx sequence number is initialized to 0, a corner case
+exists when BA setup happens immediately after association. As
+0 is a valid sequence number, start_win gets increased to 1
+incorrectly. This causes the first packet with sequence number 0
+being dropped.
+
+Initialize rx sequence number as 0xffff and skip adjusting
+start_win if the sequence number remains 0xffff. The sequence
+number will be updated once the first packet is received.
+
+Signed-off-by: Stone Piao <piaoyun@marvell.com>
+Signed-off-by: Avinash Patil <patila@marvell.com>
+Signed-off-by: Kiran Divekar <dkiran@marvell.com>
+Signed-off-by: Bing Zhao <bzhao@marvell.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/mwifiex/11n_rxreorder.c |    5 +++--
+ drivers/net/wireless/mwifiex/11n_rxreorder.h |    7 +++++++
+ drivers/net/wireless/mwifiex/wmm.c           |    2 ++
+ 3 files changed, 12 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/mwifiex/11n_rxreorder.c
++++ b/drivers/net/wireless/mwifiex/11n_rxreorder.c
+@@ -267,7 +267,8 @@ mwifiex_11n_create_rx_reorder_tbl(struct
+       else
+               last_seq = priv->rx_seq[tid];
+-      if (last_seq >= new_node->start_win)
++      if (last_seq != MWIFIEX_DEF_11N_RX_SEQ_NUM &&
++          last_seq >= new_node->start_win)
+               new_node->start_win = last_seq + 1;
+       new_node->win_size = win_size;
+@@ -612,5 +613,5 @@ void mwifiex_11n_cleanup_reorder_tbl(str
+       spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
+       INIT_LIST_HEAD(&priv->rx_reorder_tbl_ptr);
+-      memset(priv->rx_seq, 0, sizeof(priv->rx_seq));
++      mwifiex_reset_11n_rx_seq_num(priv);
+ }
+--- a/drivers/net/wireless/mwifiex/11n_rxreorder.h
++++ b/drivers/net/wireless/mwifiex/11n_rxreorder.h
+@@ -37,6 +37,13 @@
+ #define ADDBA_RSP_STATUS_ACCEPT 0
++#define MWIFIEX_DEF_11N_RX_SEQ_NUM    0xffff
++
++static inline void mwifiex_reset_11n_rx_seq_num(struct mwifiex_private *priv)
++{
++      memset(priv->rx_seq, 0xff, sizeof(priv->rx_seq));
++}
++
+ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *,
+                              u16 seqNum,
+                              u16 tid, u8 *ta,
+--- a/drivers/net/wireless/mwifiex/wmm.c
++++ b/drivers/net/wireless/mwifiex/wmm.c
+@@ -406,6 +406,8 @@ mwifiex_wmm_init(struct mwifiex_adapter
+               priv->add_ba_param.tx_win_size = MWIFIEX_AMPDU_DEF_TXWINSIZE;
+               priv->add_ba_param.rx_win_size = MWIFIEX_AMPDU_DEF_RXWINSIZE;
++              mwifiex_reset_11n_rx_seq_num(priv);
++
+               atomic_set(&priv->wmm.tx_pkts_queued, 0);
+               atomic_set(&priv->wmm.highest_queued_prio, HIGH_PRIO_TID);
+       }
diff --git a/queue-3.0/oprofile-perf-use-nr_cpus-instead-or-nr_cpumask_bits-for-static-array.patch b/queue-3.0/oprofile-perf-use-nr_cpus-instead-or-nr_cpumask_bits-for-static-array.patch
new file mode 100644 (file)
index 0000000..8a2cefe
--- /dev/null
@@ -0,0 +1,41 @@
+From e734568b675c985db2026848fefaac01c22977a5 Mon Sep 17 00:00:00 2001
+From: Will Deacon <will.deacon@arm.com>
+Date: Fri, 8 Jun 2012 16:16:04 +0100
+Subject: oprofile: perf: use NR_CPUS instead or nr_cpumask_bits for static array
+
+From: Will Deacon <will.deacon@arm.com>
+
+commit e734568b675c985db2026848fefaac01c22977a5 upstream.
+
+The OProfile perf backend uses a static array to keep track of the
+perf events on the system. When compiling with CONFIG_CPUMASK_OFFSTACK=y
+&& SMP, nr_cpumask_bits is not a compile-time constant and the build
+will fail with:
+
+oprofile_perf.c:28: error: variably modified 'perf_events' at file scope
+
+This patch uses NR_CPUs instead of nr_cpumask_bits for the array
+initialisation. If this causes space problems in the future, we can
+always move to dynamic allocation for the events array.
+
+Cc: Matt Fleming <matt@console-pimps.org>
+Reported-by: Russell King - ARM Linux <linux@arm.linux.org.uk>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Robert Richter <robert.richter@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/oprofile/oprofile_perf.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/oprofile/oprofile_perf.c
++++ b/drivers/oprofile/oprofile_perf.c
+@@ -25,7 +25,7 @@ static int oprofile_perf_enabled;
+ static DEFINE_MUTEX(oprofile_perf_mutex);
+ static struct op_counter_config *counter_config;
+-static struct perf_event **perf_events[nr_cpumask_bits];
++static struct perf_event **perf_events[NR_CPUS];
+ static int num_counters;
+ /*
index a482ab892841b1e713d8b30c447509de26b13eb5..d722683350e682164d18a4fd73483350ae24337c 100644 (file)
@@ -29,3 +29,16 @@ drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-idea.patch
 drm-i915-fix-edp-blank-screen-after-s3-resume-on-hp-desktops.patch
 acpi_pad-fix-power_saving-thread-deadlock.patch
 acpi-add-a-quirk-for-amilo-pro-v2030-to-ignore-the-timer-overriding.patch
+acpi-x86-fix-dell-m6600-acpi-reboot-regression-via-dmi.patch
+acpi-sysfs.c-strlen-fix.patch
+stable-allow-merging-of-backports-for-serious-user-visible-performance-issues.patch
+usb-option-add-id-for-cellient-men-200.patch
+usb-option-add-usb-id-for-novatel-ovation-mc551.patch
+usb-cp210x-add-10-device-ids.patch
+cfg80211-fix-potential-deadlock-in-regulatory.patch
+can-c_can-precedence-error-in-c_can_chip_config.patch
+oprofile-perf-use-nr_cpus-instead-or-nr_cpumask_bits-for-static-array.patch
+mac80211-correct-behaviour-on-unrecognised-action-frames.patch
+mwifiex-fix-11n-rx-packet-drop-issue.patch
+vfs-make-o_path-file-descriptors-usable-for-fchdir.patch
+mtd-cafe_nand-fix-an-vs-mistake.patch
diff --git a/queue-3.0/stable-allow-merging-of-backports-for-serious-user-visible-performance-issues.patch b/queue-3.0/stable-allow-merging-of-backports-for-serious-user-visible-performance-issues.patch
new file mode 100644 (file)
index 0000000..488feff
--- /dev/null
@@ -0,0 +1,47 @@
+From eb3979f64d25120d60b9e761a4c58f70b1a02f86 Mon Sep 17 00:00:00 2001
+From: Mel Gorman <mgorman@suse.de>
+Date: Thu, 21 Jun 2012 11:36:50 +0100
+Subject: stable: Allow merging of backports for serious user-visible performance issues
+
+From: Mel Gorman <mgorman@suse.de>
+
+commit eb3979f64d25120d60b9e761a4c58f70b1a02f86 upstream.
+
+Distribution kernel maintainers routinely backport fixes for users that
+were deemed important but not "something critical" as defined by the
+rules. To users of these kernels they are very serious and failing to fix
+them reduces the value of -stable.
+
+The problem is that the patches fixing these issues are often subtle and
+prone to regressions in other ways and need greater care and attention.
+To combat this, these "serious" backports should have a higher barrier
+to entry.
+
+This patch relaxes the rules to allow a distribution maintainer to merge
+to -stable a backported patch or small series that fixes a "serious"
+user-visible performance issue. They should include additional information on
+the user-visible bug affected and a link to the bugzilla entry if available.
+The same rules about the patch being already in mainline still apply.
+
+Signed-off-by: Mel Gorman <mgorman@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/stable_kernel_rules.txt |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/Documentation/stable_kernel_rules.txt
++++ b/Documentation/stable_kernel_rules.txt
+@@ -12,6 +12,12 @@ Rules on what kind of patches are accept
+    marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
+    security issue, or some "oh, that's not good" issue.  In short, something
+    critical.
++ - Serious issues as reported by a user of a distribution kernel may also
++   be considered if they fix a notable performance or interactivity issue.
++   As these fixes are not as obvious and have a higher risk of a subtle
++   regression they should only be submitted by a distribution kernel
++   maintainer and include an addendum linking to a bugzilla entry if it
++   exists and additional information on the user-visible impact.
+  - New device IDs and quirks are also accepted.
+  - No "theoretical race condition" issues, unless an explanation of how the
+    race can be exploited is also provided.
diff --git a/queue-3.0/usb-cp210x-add-10-device-ids.patch b/queue-3.0/usb-cp210x-add-10-device-ids.patch
new file mode 100644 (file)
index 0000000..c4ac93c
--- /dev/null
@@ -0,0 +1,58 @@
+From 3fcc8f96829776cf181918461923d1e3bbb831a2 Mon Sep 17 00:00:00 2001
+From: Craig Shelley <craig@microtron.org.uk>
+Date: Tue, 26 Jun 2012 23:20:04 +0100
+Subject: USB: CP210x Add 10 Device IDs
+
+From: Craig Shelley <craig@microtron.org.uk>
+
+commit 3fcc8f96829776cf181918461923d1e3bbb831a2 upstream.
+
+This patch adds 10 device IDs for CP210x based devices from the following manufacturers:
+Timewave
+Clipsal
+Festo
+Link Instruments
+
+Signed-off-by: Craig Shelley <craig@microtron.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/cp210x.c |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -93,6 +93,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
+       { USB_DEVICE(0x10C4, 0x8156) }, /* B&G H3000 link cable */
+       { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
++      { USB_DEVICE(0x10C4, 0x815F) }, /* Timewave HamLinkUSB */
+       { USB_DEVICE(0x10C4, 0x818B) }, /* AVIT Research USB to TTL */
+       { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
+       { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
+@@ -134,7 +135,13 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */
+       { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
+       { USB_DEVICE(0x1555, 0x0004) }, /* Owen AC4 USB-RS485 Converter */
++      { USB_DEVICE(0x166A, 0x0201) }, /* Clipsal 5500PACA C-Bus Pascal Automation Controller */
++      { USB_DEVICE(0x166A, 0x0301) }, /* Clipsal 5800PC C-Bus Wireless PC Interface */
+       { USB_DEVICE(0x166A, 0x0303) }, /* Clipsal 5500PCU C-Bus USB interface */
++      { USB_DEVICE(0x166A, 0x0304) }, /* Clipsal 5000CT2 C-Bus Black and White Touchscreen */
++      { USB_DEVICE(0x166A, 0x0305) }, /* Clipsal C-5000CT2 C-Bus Spectrum Colour Touchscreen */
++      { USB_DEVICE(0x166A, 0x0401) }, /* Clipsal L51xx C-Bus Architectural Dimmer */
++      { USB_DEVICE(0x166A, 0x0101) }, /* Clipsal 5560884 C-Bus Multi-room Audio Matrix Switcher */
+       { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
+       { USB_DEVICE(0x16DC, 0x0010) }, /* W-IE-NE-R Plein & Baus GmbH PL512 Power Supply */
+       { USB_DEVICE(0x16DC, 0x0011) }, /* W-IE-NE-R Plein & Baus GmbH RCM Remote Control for MARATON Power Supply */
+@@ -146,7 +153,11 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
+       { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
+       { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
++      { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
++      { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
+       { USB_DEVICE(0x3195, 0xF190) }, /* Link Instruments MSO-19 */
++      { USB_DEVICE(0x3195, 0xF280) }, /* Link Instruments MSO-28 */
++      { USB_DEVICE(0x3195, 0xF281) }, /* Link Instruments MSO-28 */
+       { USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
+       { } /* Terminating Entry */
+ };
diff --git a/queue-3.0/usb-option-add-id-for-cellient-men-200.patch b/queue-3.0/usb-option-add-id-for-cellient-men-200.patch
new file mode 100644 (file)
index 0000000..3aa7df4
--- /dev/null
@@ -0,0 +1,41 @@
+From 1e2c4e59d2b8797973471b4a287a43eac12a0f40 Mon Sep 17 00:00:00 2001
+From: Dmitry Shmygov <shmygov@rambler.ru>
+Date: Wed, 20 Jun 2012 15:51:40 +0400
+Subject: USB: option: add id for Cellient MEN-200
+
+From: Dmitry Shmygov <shmygov@rambler.ru>
+
+commit 1e2c4e59d2b8797973471b4a287a43eac12a0f40 upstream.
+
+Add vendor and product ID to option.c driver
+for Cellient MEN-200 EVDO Rev.B 450MHz data module.
+http://cellient.com
+
+Signed-off-by: Dmitry Shmygov <shmygov@rambler.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -497,6 +497,10 @@ static void option_instat_callback(struc
+ /* MediaTek products */
+ #define MEDIATEK_VENDOR_ID                    0x0e8d
++/* Cellient products */
++#define CELLIENT_VENDOR_ID                    0x2692
++#define CELLIENT_PRODUCT_MEN200                       0x9005
++
+ /* some devices interfaces need special handling due to a number of reasons */
+ enum option_blacklist_reason {
+               OPTION_BLACKLIST_NONE = 0,
+@@ -1231,6 +1235,7 @@ static const struct usb_device_id option
+       { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a1, 0xff, 0x02, 0x01) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x00, 0x00) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x02, 0x01) },        /* MediaTek MT6276M modem & app port */
++      { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
+       { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/queue-3.0/usb-option-add-usb-id-for-novatel-ovation-mc551.patch b/queue-3.0/usb-option-add-usb-id-for-novatel-ovation-mc551.patch
new file mode 100644 (file)
index 0000000..13fe495
--- /dev/null
@@ -0,0 +1,38 @@
+From 065b07e7a14676f4138ce4619d229c0be5a74230 Mon Sep 17 00:00:00 2001
+From: Forest Bond <forest.bond@rapidrollout.com>
+Date: Fri, 22 Jun 2012 10:30:38 -0400
+Subject: USB: option: Add USB ID for Novatel Ovation MC551
+
+From: Forest Bond <forest.bond@rapidrollout.com>
+
+commit 065b07e7a14676f4138ce4619d229c0be5a74230 upstream.
+
+This device is also known as the Verizon USB551L.
+
+Signed-off-by: Forest Bond <forest.bond@rapidrollout.com>
+Acked-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -236,6 +236,7 @@ static void option_instat_callback(struc
+ #define NOVATELWIRELESS_PRODUCT_G1            0xA001
+ #define NOVATELWIRELESS_PRODUCT_G1_M          0xA002
+ #define NOVATELWIRELESS_PRODUCT_G2            0xA010
++#define NOVATELWIRELESS_PRODUCT_MC551         0xB001
+ /* AMOI PRODUCTS */
+ #define AMOI_VENDOR_ID                                0x1614
+@@ -738,6 +739,8 @@ static const struct usb_device_id option
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1) },
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1_M) },
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G2) },
++      /* Novatel Ovation MC551 a.k.a. Verizon USB551L */
++      { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC551, 0xff, 0xff, 0xff) },
+       { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
+       { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
diff --git a/queue-3.0/vfs-make-o_path-file-descriptors-usable-for-fchdir.patch b/queue-3.0/vfs-make-o_path-file-descriptors-usable-for-fchdir.patch
new file mode 100644 (file)
index 0000000..a4a2b42
--- /dev/null
@@ -0,0 +1,53 @@
+From 332a2e1244bd08b9e3ecd378028513396a004a24 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Sat, 7 Jul 2012 10:17:00 -0700
+Subject: vfs: make O_PATH file descriptors usable for 'fchdir()'
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 332a2e1244bd08b9e3ecd378028513396a004a24 upstream.
+
+We already use them for openat() and friends, but fchdir() also wants to
+be able to use O_PATH file descriptors.  This should make it comparable
+to the O_SEARCH of Solaris.  In particular, O_PATH allows you to access
+(not-quite-open) a directory you don't have read persmission to, only
+execute permission.
+
+Noticed during development of multithread support for ksh93.
+
+Reported-by: ольга крыжановская <olga.kryzhanovska@gmail.com>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/open.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/fs/open.c
++++ b/fs/open.c
+@@ -396,10 +396,10 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd
+ {
+       struct file *file;
+       struct inode *inode;
+-      int error;
++      int error, fput_needed;
+       error = -EBADF;
+-      file = fget(fd);
++      file = fget_raw_light(fd, &fput_needed);
+       if (!file)
+               goto out;
+@@ -413,7 +413,7 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd
+       if (!error)
+               set_fs_pwd(current->fs, &file->f_path);
+ out_putf:
+-      fput(file);
++      fput_light(file, fput_needed);
+ out:
+       return error;
+ }