aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2018-09-12 08:40:03 +0200
committerRafał Miłecki <rafal@milecki.pl>2018-09-12 08:42:28 +0200
commit6f0ede54387e4a49fae8a94766e5ec06640bcb38 (patch)
tree6effe6f91e6fa829e03aa2a3b3cd3f73406c6761 /package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch
parentd3e9c8862ff97d20b5f90cc591a28b1fd523689a (diff)
downloadupstream-6f0ede54387e4a49fae8a94766e5ec06640bcb38.tar.gz
upstream-6f0ede54387e4a49fae8a94766e5ec06640bcb38.tar.bz2
upstream-6f0ede54387e4a49fae8a94766e5ec06640bcb38.zip
mac80211: brcmfmac: backport CYW89342 support & fixes from 4.20
Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commit b3d441c5f7c5247c1b0c3b6e9827d49a27093d50)
Diffstat (limited to 'package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch')
-rw-r--r--package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch b/package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch
new file mode 100644
index 0000000000..8267b37864
--- /dev/null
+++ b/package/kernel/mac80211/patches/344-0001-brcmfmac-fix-wrong-strnchr-usage.patch
@@ -0,0 +1,38 @@
+From cb18e2e9ec71d42409a51b83546686c609780dde Mon Sep 17 00:00:00 2001
+From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
+Date: Wed, 22 Aug 2018 15:22:15 +0200
+Subject: [PATCH] brcmfmac: fix wrong strnchr usage
+
+strnchr takes arguments in the order of its name: string, max bytes to
+read, character to search for. Here we're passing '\n' aka 10 as the
+buffer size, and searching for sizeof(buf) aka BRCMF_DCMD_SMLEN aka
+256 (aka '\0', since it's implicitly converted to char) within those 10
+bytes.
+
+Just interchanging the last two arguments would still leave a bug,
+because if we've been successful once, there are not sizeof(buf)
+characters left after the new value of p.
+
+Since clmver is immediately afterwards passed as a %s argument, I assume
+that it is actually a properly nul-terminated string. For that case, we
+have strreplace().
+
+Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+@@ -296,9 +296,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
+ /* Replace all newline/linefeed characters with space
+ * character
+ */
+- ptr = clmver;
+- while ((ptr = strnchr(ptr, '\n', sizeof(buf))) != NULL)
+- *ptr = ' ';
++ strreplace(clmver, '\n', ' ');
+
+ brcmf_dbg(INFO, "CLM version = %s\n", clmver);
+ }