summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-05-19 10:01:34 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-05-19 10:01:34 -0700
commit940055e0ba1789e9b2dbb8f0c0c90a1ae96d8ce9 (patch)
treecc0f027c784c4cb467bc386d37519f2a43826643
parentf09b586697e40cc294ebff71f6f68b79f3059e60 (diff)
downloadstable-queue-940055e0ba1789e9b2dbb8f0c0c90a1ae96d8ce9.tar.gz
.38 patches
-rw-r--r--queue-2.6.38/cifs-clean-up-various-nits-in-unicode-routines-try-2.patch140
-rw-r--r--queue-2.6.38/cifs-fix-cifsconverttoucs-for-the-mapchars-case.patch65
-rw-r--r--queue-2.6.38/iwlegacy-fix-ibss-mode-crashes.patch63
-rw-r--r--queue-2.6.38/series3
4 files changed, 271 insertions, 0 deletions
diff --git a/queue-2.6.38/cifs-clean-up-various-nits-in-unicode-routines-try-2.patch b/queue-2.6.38/cifs-clean-up-various-nits-in-unicode-routines-try-2.patch
new file mode 100644
index 0000000000..9cc47d96c0
--- /dev/null
+++ b/queue-2.6.38/cifs-clean-up-various-nits-in-unicode-routines-try-2.patch
@@ -0,0 +1,140 @@
+From 581ade4d1c025eb10421eda0d0c0a2f04447d7c5 Mon Sep 17 00:00:00 2001
+From: Jeff Layton <jlayton@redhat.com>
+Date: Tue, 5 Apr 2011 15:02:37 -0400
+Subject: cifs: clean up various nits in unicode routines (try #2)
+
+From: Jeff Layton <jlayton@redhat.com>
+
+commit 581ade4d1c025eb10421eda0d0c0a2f04447d7c5 upstream.
+
+Minor revision to the original patch. Don't abuse the __le16 variable
+on the stack by casting it to wchar_t and handing it off to char2uni.
+Declare an actual wchar_t on the stack instead. This fixes a valid
+sparse warning.
+
+Fix the spelling of UNI_ASTERISK. Eliminate the unneeded len_remaining
+variable in cifsConvertToUCS.
+
+Also, as David Howells points out. We were better off making
+cifsConvertToUCS *not* use put_unaligned_le16 since it means that we
+can't optimize the mapped characters at compile time. Switch them
+instead to use cpu_to_le16, and simply use put_unaligned to set them
+in the string.
+
+Reported-and-acked-by: David Howells <dhowells@redhat.com>
+Signed-off-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/cifs_unicode.c | 35 +++++++++++++++++------------------
+ fs/cifs/cifs_unicode.h | 2 +-
+ 2 files changed, 18 insertions(+), 19 deletions(-)
+
+--- a/fs/cifs/cifs_unicode.c
++++ b/fs/cifs/cifs_unicode.c
+@@ -90,7 +90,7 @@ cifs_mapchar(char *target, const __u16 s
+ case UNI_COLON:
+ *target = ':';
+ break;
+- case UNI_ASTERIK:
++ case UNI_ASTERISK:
+ *target = '*';
+ break;
+ case UNI_QUESTION:
+@@ -264,40 +264,40 @@ cifs_strndup_from_ucs(const char *src, c
+ * names are little endian 16 bit Unicode on the wire
+ */
+ int
+-cifsConvertToUCS(__le16 *target, const char *source, int maxlen,
++cifsConvertToUCS(__le16 *target, const char *source, int srclen,
+ const struct nls_table *cp, int mapChars)
+ {
+ int i, j, charlen;
+- int len_remaining = maxlen;
+ char src_char;
+- __u16 temp;
++ __le16 dst_char;
++ wchar_t tmp;
+
+ if (!mapChars)
+ return cifs_strtoUCS(target, source, PATH_MAX, cp);
+
+- for (i = 0, j = 0; i < maxlen; j++) {
++ for (i = 0, j = 0; i < srclen; j++) {
+ src_char = source[i];
+ switch (src_char) {
+ case 0:
+- put_unaligned_le16(0, &target[j]);
++ put_unaligned(0, &target[j]);
+ goto ctoUCS_out;
+ case ':':
+- temp = UNI_COLON;
++ dst_char = cpu_to_le16(UNI_COLON);
+ break;
+ case '*':
+- temp = UNI_ASTERIK;
++ dst_char = cpu_to_le16(UNI_ASTERISK);
+ break;
+ case '?':
+- temp = UNI_QUESTION;
++ dst_char = cpu_to_le16(UNI_QUESTION);
+ break;
+ case '<':
+- temp = UNI_LESSTHAN;
++ dst_char = cpu_to_le16(UNI_LESSTHAN);
+ break;
+ case '>':
+- temp = UNI_GRTRTHAN;
++ dst_char = cpu_to_le16(UNI_GRTRTHAN);
+ break;
+ case '|':
+- temp = UNI_PIPE;
++ dst_char = cpu_to_le16(UNI_PIPE);
+ break;
+ /*
+ * FIXME: We can not handle remapping backslash (UNI_SLASH)
+@@ -305,17 +305,17 @@ cifsConvertToUCS(__le16 *target, const c
+ * as they use backslash as separator.
+ */
+ default:
+- charlen = cp->char2uni(source+i, len_remaining,
+- &temp);
++ charlen = cp->char2uni(source + i, srclen - i, &tmp);
++ dst_char = cpu_to_le16(tmp);
++
+ /*
+ * if no match, use question mark, which at least in
+ * some cases serves as wild card
+ */
+ if (charlen < 1) {
+- temp = 0x003f;
++ dst_char = cpu_to_le16(0x003f);
+ charlen = 1;
+ }
+- len_remaining -= charlen;
+ /*
+ * character may take more than one byte in the source
+ * string, but will take exactly two bytes in the
+@@ -324,9 +324,8 @@ cifsConvertToUCS(__le16 *target, const c
+ i += charlen;
+ continue;
+ }
+- put_unaligned_le16(temp, &target[j]);
++ put_unaligned(dst_char, &target[j]);
+ i++; /* move to next char in source string */
+- len_remaining--;
+ }
+
+ ctoUCS_out:
+--- a/fs/cifs/cifs_unicode.h
++++ b/fs/cifs/cifs_unicode.h
+@@ -44,7 +44,7 @@
+ * reserved symbols (along with \ and /), otherwise illegal to store
+ * in filenames in NTFS
+ */
+-#define UNI_ASTERIK (__u16) ('*' + 0xF000)
++#define UNI_ASTERISK (__u16) ('*' + 0xF000)
+ #define UNI_QUESTION (__u16) ('?' + 0xF000)
+ #define UNI_COLON (__u16) (':' + 0xF000)
+ #define UNI_GRTRTHAN (__u16) ('>' + 0xF000)
diff --git a/queue-2.6.38/cifs-fix-cifsconverttoucs-for-the-mapchars-case.patch b/queue-2.6.38/cifs-fix-cifsconverttoucs-for-the-mapchars-case.patch
new file mode 100644
index 0000000000..12f0f43742
--- /dev/null
+++ b/queue-2.6.38/cifs-fix-cifsconverttoucs-for-the-mapchars-case.patch
@@ -0,0 +1,65 @@
+From 11379b5e33950048ad66825da7f462b0d0da9d73 Mon Sep 17 00:00:00 2001
+From: Jeff Layton <jlayton@redhat.com>
+Date: Tue, 17 May 2011 15:28:21 -0400
+Subject: cifs: fix cifsConvertToUCS() for the mapchars case
+
+From: Jeff Layton <jlayton@redhat.com>
+
+commit 11379b5e33950048ad66825da7f462b0d0da9d73 upstream.
+
+As Metze pointed out, commit 84cdf74e broke mapchars option:
+
+ Commit "cifs: fix unaligned accesses in cifsConvertToUCS"
+ (84cdf74e8096a10dd6acbb870dd404b92f07a756) does multiple steps
+ in just one commit (moving the function and changing it without
+ testing).
+
+ put_unaligned_le16(temp, &target[j]); is never called for any
+ codepoint the goes via the 'default' switch statement. As a result
+ we put just zero (or maybe uninitialized) bytes into the target
+ buffer.
+
+His proposed patch looks correct, but doesn't apply to the current head
+of the tree. This patch should also fix it.
+
+Reported-by: Stefan Metzmacher <metze@samba.org>
+Signed-off-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/cifs_unicode.c | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+--- a/fs/cifs/cifs_unicode.c
++++ b/fs/cifs/cifs_unicode.c
+@@ -277,6 +277,7 @@ cifsConvertToUCS(__le16 *target, const c
+
+ for (i = 0, j = 0; i < srclen; j++) {
+ src_char = source[i];
++ charlen = 1;
+ switch (src_char) {
+ case 0:
+ put_unaligned(0, &target[j]);
+@@ -316,16 +317,13 @@ cifsConvertToUCS(__le16 *target, const c
+ dst_char = cpu_to_le16(0x003f);
+ charlen = 1;
+ }
+- /*
+- * character may take more than one byte in the source
+- * string, but will take exactly two bytes in the
+- * target string
+- */
+- i += charlen;
+- continue;
+ }
++ /*
++ * character may take more than one byte in the source string,
++ * but will take exactly two bytes in the target string
++ */
++ i += charlen;
+ put_unaligned(dst_char, &target[j]);
+- i++; /* move to next char in source string */
+ }
+
+ ctoUCS_out:
diff --git a/queue-2.6.38/iwlegacy-fix-ibss-mode-crashes.patch b/queue-2.6.38/iwlegacy-fix-ibss-mode-crashes.patch
new file mode 100644
index 0000000000..294aecf73e
--- /dev/null
+++ b/queue-2.6.38/iwlegacy-fix-ibss-mode-crashes.patch
@@ -0,0 +1,63 @@
+From eb85de3f84868ca85703a23617b4079ce79a801e Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Sat, 7 May 2011 17:46:21 +0200
+Subject: iwlegacy: fix IBSS mode crashes
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit eb85de3f84868ca85703a23617b4079ce79a801e upstream.
+
+We should not switch to non-IBSS channels when working in IBSS mode,
+otherwise there are microcode errors, and after some time system
+crashes.
+
+This bug is only observable when software scan is used in IBSS mode,
+so should be considered as regression after:
+
+commit 0263aa45293838b514b8af674a03faf040991a90
+Author: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Tue Mar 29 11:24:21 2011 +0200
+
+ iwl3945: disable hw scan by default
+
+However IBSS mode check, which this patch add again, was removed by
+
+commit b2f30e8bdd8ef5f3b5a7ef9146509585a15347d3
+Author: Johannes Berg <johannes.berg@intel.com>
+Date: Thu Jan 21 07:32:20 2010 -0800
+
+ iwlwifi: remove IBSS channel sanity check
+
+That commit claim that mac80211 will not use non-IBSS channel in IBSS
+mode, what definitely is not true. Bug probably should be fixed in
+mac80211, but that will require more work, so better to apply that patch
+temporally, and provide proper mac80211 fix latter.
+
+Resolves:
+https://bugzilla.kernel.org/show_bug.cgi?id=34452
+
+Reported-and-tested-by: Mikko Rapeli <mikko.rapeli@iki.fi>
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlwifi/iwl-legacy.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/net/wireless/iwlwifi/iwl-legacy.c
++++ b/drivers/net/wireless/iwlwifi/iwl-legacy.c
+@@ -123,6 +123,13 @@ int iwl_legacy_mac_config(struct ieee802
+ goto set_ch_out;
+ }
+
++ if (priv->iw_mode == NL80211_IFTYPE_ADHOC &&
++ !is_channel_ibss(ch_info)) {
++ IWL_DEBUG_MAC80211(priv, "leave - not IBSS channel\n");
++ ret = -EINVAL;
++ goto set_ch_out;
++ }
++
+ spin_lock_irqsave(&priv->lock, flags);
+
+ for_each_context(priv, ctx) {
diff --git a/queue-2.6.38/series b/queue-2.6.38/series
index c9dc05d4d2..e283948adf 100644
--- a/queue-2.6.38/series
+++ b/queue-2.6.38/series
@@ -66,3 +66,6 @@ megaraid_sas-sanity-check-user-supplied-length-before-passing-it-to-dma_alloc_co
cdrom-always-check_disk_change-on-open.patch
vmxnet3-fix-inconsistent-lro-state-after-initialization.patch
revert-retrieve-the-caching-mode-page.patch
+cifs-clean-up-various-nits-in-unicode-routines-try-2.patch
+cifs-fix-cifsconverttoucs-for-the-mapchars-case.patch
+iwlegacy-fix-ibss-mode-crashes.patch