]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Jul 2014 20:16:19 +0000 (13:16 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Jul 2014 20:16:19 +0000 (13:16 -0700)
added patches:
arm-omap2-fix-parser-bug-in-platform-muxing-code.patch
arm64-bug-fix-in-stack-alignment-exception.patch
b43-fix-frequency-reported-on-g-phy-with-new-firmware.patch
cifs-fix-mount-failure-with-broken-pathnames-when-smb3-mount-with-mapchars-option.patch
iwlwifi-pcie-try-to-get-ownership-several-times.patch

queue-3.10/arm-omap2-fix-parser-bug-in-platform-muxing-code.patch [new file with mode: 0644]
queue-3.10/arm64-bug-fix-in-stack-alignment-exception.patch [new file with mode: 0644]
queue-3.10/b43-fix-frequency-reported-on-g-phy-with-new-firmware.patch [new file with mode: 0644]
queue-3.10/cifs-fix-mount-failure-with-broken-pathnames-when-smb3-mount-with-mapchars-option.patch [new file with mode: 0644]
queue-3.10/iwlwifi-pcie-try-to-get-ownership-several-times.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/arm-omap2-fix-parser-bug-in-platform-muxing-code.patch b/queue-3.10/arm-omap2-fix-parser-bug-in-platform-muxing-code.patch
new file mode 100644 (file)
index 0000000..ca0ef00
--- /dev/null
@@ -0,0 +1,60 @@
+From c021f241f4fab2bb4fc4120a38a828a03dd3f970 Mon Sep 17 00:00:00 2001
+From: "David R. Piegdon" <lkml@p23q.org>
+Date: Mon, 16 Jun 2014 23:42:51 +0000
+Subject: ARM: OMAP2+: Fix parser-bug in platform muxing code
+
+From: "David R. Piegdon" <lkml@p23q.org>
+
+commit c021f241f4fab2bb4fc4120a38a828a03dd3f970 upstream.
+
+Fix a parser-bug in the omap2 muxing code where muxtable-entries will be
+wrongly selected if the requested muxname is a *prefix* of their
+m0-entry and they have a matching mN-entry. Fix by additionally checking
+that the length of the m0_entry is equal.
+
+For example muxing of "dss_data2.dss_data2" on omap32xx will fail
+because the prefix "dss_data2" will match the mux-entries "dss_data2" as
+well as "dss_data20", with the suffix "dss_data2" matching m0 (for
+dss_data2) and m4 (for dss_data20). Thus both are recognized as signal
+path candidates:
+
+Relevant muxentries from mux34xx.c:
+        _OMAP3_MUXENTRY(DSS_DATA20, 90,
+                "dss_data20", NULL, "mcspi3_somi", "dss_data2",
+                "gpio_90", NULL, NULL, "safe_mode"),
+        _OMAP3_MUXENTRY(DSS_DATA2, 72,
+                "dss_data2", NULL, NULL, NULL,
+                "gpio_72", NULL, NULL, "safe_mode"),
+
+This will result in a failure to mux the pin at all:
+
+ _omap_mux_get_by_name: Multiple signal paths (2) for dss_data2.dss_data2
+
+Patch should apply to linus' latest master down to rather old linux-2.6
+trees.
+
+Signed-off-by: David R. Piegdon <lkml@p23q.org>
+Cc: stable@vger.kernel.org
+[tony@atomide.com: updated description to include full description]
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mach-omap2/mux.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/mach-omap2/mux.c
++++ b/arch/arm/mach-omap2/mux.c
+@@ -183,8 +183,10 @@ static int __init _omap_mux_get_by_name(
+               m0_entry = mux->muxnames[0];
+               /* First check for full name in mode0.muxmode format */
+-              if (mode0_len && strncmp(muxname, m0_entry, mode0_len))
+-                      continue;
++              if (mode0_len)
++                      if (strncmp(muxname, m0_entry, mode0_len) ||
++                          (strlen(m0_entry) != mode0_len))
++                              continue;
+               /* Then check for muxmode only */
+               for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
diff --git a/queue-3.10/arm64-bug-fix-in-stack-alignment-exception.patch b/queue-3.10/arm64-bug-fix-in-stack-alignment-exception.patch
new file mode 100644 (file)
index 0000000..680eacb
--- /dev/null
@@ -0,0 +1,35 @@
+From 3906c2b53cd23c2ae03e6ce41432c8e7f0a3cbbb Mon Sep 17 00:00:00 2001
+From: ChiaHao <andy.jhshiu@gmail.com>
+Date: Thu, 12 Jun 2014 15:32:33 +0100
+Subject: arm64: Bug fix in stack alignment exception
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: ChiaHao <andy.jhshiu@gmail.com>
+
+commit 3906c2b53cd23c2ae03e6ce41432c8e7f0a3cbbb upstream.
+
+The value of ESR has been stored into x1, and should be directly pass to
+do_sp_pc_abort function, "MOV x1, x25" is an extra operation and do_sp_pc_abort
+will get the wrong value of ESR.
+
+Signed-off-by: ChiaHao <andy.jhshiu@gmail.com>
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/kernel/entry.S |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/arm64/kernel/entry.S
++++ b/arch/arm64/kernel/entry.S
+@@ -275,7 +275,6 @@ el1_sp_pc:
+        * Stack or PC alignment exception handling
+        */
+       mrs     x0, far_el1
+-      mov     x1, x25
+       mov     x2, sp
+       b       do_sp_pc_abort
+ el1_undef:
diff --git a/queue-3.10/b43-fix-frequency-reported-on-g-phy-with-new-firmware.patch b/queue-3.10/b43-fix-frequency-reported-on-g-phy-with-new-firmware.patch
new file mode 100644 (file)
index 0000000..0a683c8
--- /dev/null
@@ -0,0 +1,54 @@
+From 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
+Date: Thu, 12 Jun 2014 22:28:22 +0200
+Subject: b43: fix frequency reported on G-PHY with /new/ firmware
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
+
+commit 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 upstream.
+
+Support for firmware rev 508+ was added years ago, but we never noticed
+it reports channel in a different way for G-PHY devices. Instead of
+offset from 2400 MHz it simply passes channel id (AKA hw_value).
+
+So far it was (most probably) affecting monitor mode users only, but
+the following recent commit made it noticeable for quite everybody:
+
+commit 3afc2167f60a327a2c1e1e2600ef209a3c2b75b7
+Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date:   Tue Mar 4 16:50:13 2014 +0200
+
+    cfg80211/mac80211: ignore signal if the frame was heard on wrong channel
+
+Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/b43/xmit.c |   10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/b43/xmit.c
++++ b/drivers/net/wireless/b43/xmit.c
+@@ -810,9 +810,13 @@ void b43_rx(struct b43_wldev *dev, struc
+               break;
+       case B43_PHYTYPE_G:
+               status.band = IEEE80211_BAND_2GHZ;
+-              /* chanid is the radio channel cookie value as used
+-               * to tune the radio. */
+-              status.freq = chanid + 2400;
++              /* Somewhere between 478.104 and 508.1084 firmware for G-PHY
++               * has been modified to be compatible with N-PHY and others.
++               */
++              if (dev->fw.rev >= 508)
++                      status.freq = ieee80211_channel_to_frequency(chanid, status.band);
++              else
++                      status.freq = chanid + 2400;
+               break;
+       case B43_PHYTYPE_N:
+       case B43_PHYTYPE_LP:
diff --git a/queue-3.10/cifs-fix-mount-failure-with-broken-pathnames-when-smb3-mount-with-mapchars-option.patch b/queue-3.10/cifs-fix-mount-failure-with-broken-pathnames-when-smb3-mount-with-mapchars-option.patch
new file mode 100644 (file)
index 0000000..a74e6e4
--- /dev/null
@@ -0,0 +1,58 @@
+From ce36d9ab3bab06b7b5522f5c8b68fac231b76ffb Mon Sep 17 00:00:00 2001
+From: Steve French <smfrench@gmail.com>
+Date: Sun, 22 Jun 2014 20:38:49 -0500
+Subject: CIFS: fix mount failure with broken pathnames when smb3 mount with mapchars option
+
+From: Steve French <smfrench@gmail.com>
+
+commit ce36d9ab3bab06b7b5522f5c8b68fac231b76ffb upstream.
+
+When we SMB3 mounted with mapchars (to allow reserved characters : \ / > < * ?
+via the Unicode Windows to POSIX remap range) empty paths
+(eg when we open "" to query the root of the SMB3 directory on mount) were not
+null terminated so we sent garbarge as a path name on empty paths which caused
+SMB2/SMB2.1/SMB3 mounts to fail when mapchars was specified.  mapchars is
+particularly important since Unix Extensions for SMB3 are not supported (yet)
+
+Signed-off-by: Steve French <smfrench@gmail.com>
+Reviewed-by: David Disseldorp <ddiss@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/cifs/cifs_unicode.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/fs/cifs/cifs_unicode.c
++++ b/fs/cifs/cifs_unicode.c
+@@ -290,7 +290,8 @@ int
+ cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
+                const struct nls_table *cp, int mapChars)
+ {
+-      int i, j, charlen;
++      int i, charlen;
++      int j = 0;
+       char src_char;
+       __le16 dst_char;
+       wchar_t tmp;
+@@ -298,12 +299,11 @@ cifsConvertToUTF16(__le16 *target, const
+       if (!mapChars)
+               return cifs_strtoUTF16(target, source, PATH_MAX, cp);
+-      for (i = 0, j = 0; i < srclen; j++) {
++      for (i = 0; i < srclen; j++) {
+               src_char = source[i];
+               charlen = 1;
+               switch (src_char) {
+               case 0:
+-                      put_unaligned(0, &target[j]);
+                       goto ctoUTF16_out;
+               case ':':
+                       dst_char = cpu_to_le16(UNI_COLON);
+@@ -350,6 +350,7 @@ cifsConvertToUTF16(__le16 *target, const
+       }
+ ctoUTF16_out:
++      put_unaligned(0, &target[j]); /* Null terminate target unicode string */
+       return j;
+ }
diff --git a/queue-3.10/iwlwifi-pcie-try-to-get-ownership-several-times.patch b/queue-3.10/iwlwifi-pcie-try-to-get-ownership-several-times.patch
new file mode 100644 (file)
index 0000000..4f068a8
--- /dev/null
@@ -0,0 +1,66 @@
+From 501fd9895c1d7d8161ed56698ae2fccb10ef14f5 Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date: Thu, 8 May 2014 12:15:22 +0300
+Subject: iwlwifi: pcie: try to get ownership several times
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+commit 501fd9895c1d7d8161ed56698ae2fccb10ef14f5 upstream.
+
+Some races with the hardware can happen when we take
+ownership of the device. Don't give up after the first try.
+
+Reviewed-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/iwlwifi/pcie/trans.c |   30 ++++++++++++++++++------------
+ 1 file changed, 18 insertions(+), 12 deletions(-)
+
+--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
++++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
+@@ -339,6 +339,7 @@ static int iwl_pcie_prepare_card_hw(stru
+ {
+       int ret;
+       int t = 0;
++      int iter;
+       IWL_DEBUG_INFO(trans, "iwl_trans_prepare_card_hw enter\n");
+@@ -347,18 +348,23 @@ static int iwl_pcie_prepare_card_hw(stru
+       if (ret >= 0)
+               return 0;
+-      /* If HW is not ready, prepare the conditions to check again */
+-      iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG,
+-                  CSR_HW_IF_CONFIG_REG_PREPARE);
+-
+-      do {
+-              ret = iwl_pcie_set_hw_ready(trans);
+-              if (ret >= 0)
+-                      return 0;
+-
+-              usleep_range(200, 1000);
+-              t += 200;
+-      } while (t < 150000);
++      for (iter = 0; iter < 10; iter++) {
++              /* If HW is not ready, prepare the conditions to check again */
++              iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG,
++                          CSR_HW_IF_CONFIG_REG_PREPARE);
++
++              do {
++                      ret = iwl_pcie_set_hw_ready(trans);
++                      if (ret >= 0)
++                              return 0;
++
++                      usleep_range(200, 1000);
++                      t += 200;
++              } while (t < 150000);
++              msleep(25);
++      }
++
++      IWL_DEBUG_INFO(trans, "got NIC after %d iterations\n", iter);
+       return ret;
+ }
index 12b043c04abcb6ef642947b9a6784027eb04a0df..7ffd4156c77daca3ae35889c29a97f2cc706f948 100644 (file)
@@ -27,3 +27,8 @@ rbd-handle-parent_overlap-on-writes-correctly.patch
 hwmon-ina2xx-cast-to-s16-on-shunt-and-current-regs.patch
 mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch
 mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch
+iwlwifi-pcie-try-to-get-ownership-several-times.patch
+arm-omap2-fix-parser-bug-in-platform-muxing-code.patch
+arm64-bug-fix-in-stack-alignment-exception.patch
+b43-fix-frequency-reported-on-g-phy-with-new-firmware.patch
+cifs-fix-mount-failure-with-broken-pathnames-when-smb3-mount-with-mapchars-option.patch