<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/net/wireless/broadcom, branch v5.7</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v5.7</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v5.7'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2020-04-06T14:07:44Z</updated>
<entry>
<title>brcmfmac: add stub for monitor interface xmit</title>
<updated>2020-04-06T14:07:44Z</updated>
<author>
<name>Rafał Miłecki</name>
<email>rafal@milecki.pl</email>
</author>
<published>2020-03-27T13:03:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5bf8e6096c7390f8f2c4d5394b5e49823adb004e'/>
<id>urn:sha1:5bf8e6096c7390f8f2c4d5394b5e49823adb004e</id>
<content type='text'>
According to the struct net_device_ops documentation .ndo_start_xmit is
"Required; cannot be NULL.". Missing it may crash kernel easily:

[  341.216709] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[  341.224836] pgd = 26088755
[  341.227544] [00000000] *pgd=00000000
[  341.231135] Internal error: Oops: 80000007 [#1] SMP ARM
[  341.236367] Modules linked in: pppoe ppp_async iptable_nat brcmfmac xt_state xt_nat xt_conntrack xt_REDIRECT xt_MASQU
[  341.304689] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.24 #0
[  341.310621] Hardware name: BCM5301X
[  341.314116] PC is at 0x0
[  341.316664] LR is at dev_hard_start_xmit+0x8c/0x11c
[  341.321546] pc : [&lt;00000000&gt;]    lr : [&lt;c0469fa8&gt;]    psr: 60000113
[  341.327821] sp : c0801c30  ip : c610cf00  fp : c08048e4
[  341.333051] r10: c073a63a  r9 : c08044dc  r8 : c6c04e00
[  341.338283] r7 : 00000000  r6 : c60f5000  r5 : 00000000  r4 : c6a9c3c0
[  341.344820] r3 : 00000000  r2 : bf25a13c  r1 : c60f5000  r0 : c6a9c3c0
[  341.351358] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[  341.358504] Control: 10c5387d  Table: 0611c04a  DAC: 00000051
[  341.364257] Process swapper/0 (pid: 0, stack limit = 0xc68ed0ca)
[  341.370271] Stack: (0xc0801c30 to 0xc0802000)
[  341.374633] 1c20:                                     c6e7d480 c0802d00 c60f5050 c0801c6c
[  341.382825] 1c40: c60f5000 c6a9c3c0 c6f90000 c6f9005c c6c04e00 c60f5000 00000000 c6f9005c
[  341.391015] 1c60: 00000000 c04a033c 00f90200 00000010 c6a9c3c0 c6a9c3c0 c6f90000 00000000
[  341.399205] 1c80: 00000000 00000000 00000000 c046a7ac c6f9005c 00000001 fffffff4 00000000
[  341.407395] 1ca0: c6f90200 00000000 c60f5000 c0479550 00000000 c6f90200 c6a9c3c0 16000000
[  341.415586] 1cc0: 0000001c 6f4ad52f c6197040 b6df9387 36000000 c0520404 c073a80c c6a9c3c0
[  341.423777] 1ce0: 00000000 c6d643c0 c6a9c3c0 c0800024 00000001 00000001 c6d643c8 c6a9c3c0
[  341.431967] 1d00: c081b9c0 c7abca80 c610c840 c081b9c0 0000001c 00400000 c6bc5e6c c0522fb4
[  341.440157] 1d20: c6d64400 00000004 c6bc5e0a 00000000 c60f5000 c7abca80 c081b9c0 c0522f54
[  341.448348] 1d40: c6a9c3c0 c7abca80 c0803e48 c0549c94 c610c828 0000000a c0801d74 00000003
[  341.456538] 1d60: c6ec8f0a 00000000 c60f5000 c7abca80 c081b9c0 c0548520 0000000a 00000000
[  341.464728] 1d80: 00000000 003a0000 00000000 00000000 00000000 00000000 00000000 00000000
[  341.472919] 1da0: 000002ff 00000000 00000000 16000000 00000000 00000000 00000000 00000000
[  341.481110] 1dc0: 00000000 0000008f 00000000 00000000 00000000 2d132a69 c6bc5e40 00000000
[  341.489300] 1de0: c6bc5e40 c6a9c3c0 00000000 c6ec8e50 00000001 c054b070 00000001 00000000
[  341.497490] 1e00: c0807200 c6bc5e00 00000000 ffffe000 00000100 c054aea4 00000000 00000000
[  341.505681] 1e20: 00000122 00400000 c0802d00 c0172e80 6f56a70e ffffffff 6f56a70e c7eb9cc0
[  341.513871] 1e40: c7eb82c0 00000000 c0801e60 c017309c 00000000 00000000 07780000 c07382c0
[  341.522061] 1e60: 00000000 c7eb9cc0 c0739cc0 c0803f74 c0801e70 c0801e70 c0801ea4 c013d380
[  341.530253] 1e80: 00000000 000000a0 00000001 c0802084 c0802080 40000001 ffffe000 00000100
[  341.538443] 1ea0: c0802080 c01021e8 c8803100 10c5387d 00000000 c07341f0 c0739880 0000000a
[  341.546633] 1ec0: c0734180 00001017 c0802d00 c062aa98 00200002 c062aa60 c8803100 c073984c
[  341.554823] 1ee0: 00000000 00000001 00000000 c7810000 c8803100 10c5387d 00000000 c011c188
[  341.563014] 1f00: c073984c c015f0f8 c0804244 c0815ae4 c880210c c8802100 c0801f40 c037c584
[  341.571204] 1f20: c01035f8 60000013 ffffffff c0801f74 c080afd4 c0800000 10c5387d c0101a8c
[  341.579395] 1f40: 00000000 004ac9dc c7eba4b4 c010ee60 ffffe000 c0803e68 c0803ea8 00000001
[  341.587587] 1f60: c080afd4 c062ca20 10c5387d 00000000 00000000 c0801f90 c01035f4 c01035f8
[  341.595776] 1f80: 60000013 ffffffff 00000051 00000000 ffffe000 c013ff50 000000ce c0803e40
[  341.603967] 1fa0: c082216c 00000000 00000001 c072ba38 10c5387d c0140214 c0822184 c0700df8
[  341.612157] 1fc0: ffffffff ffffffff 00000000 c070058c c072ba38 2d162e71 00000000 c0700330
[  341.620348] 1fe0: 00000051 10c0387d 000000ff 00a521d0 413fc090 00000000 00000000 00000000
[  341.628558] [&lt;c0469fa8&gt;] (dev_hard_start_xmit) from [&lt;c04a033c&gt;] (sch_direct_xmit+0xe4/0x2bc)
[  341.637106] [&lt;c04a033c&gt;] (sch_direct_xmit) from [&lt;c046a7ac&gt;] (__dev_queue_xmit+0x6a4/0x72c)
[  341.645481] [&lt;c046a7ac&gt;] (__dev_queue_xmit) from [&lt;c0520404&gt;] (ip6_finish_output2+0x18c/0x434)
[  341.654112] [&lt;c0520404&gt;] (ip6_finish_output2) from [&lt;c0522fb4&gt;] (ip6_output+0x5c/0xd0)
[  341.662053] [&lt;c0522fb4&gt;] (ip6_output) from [&lt;c0549c94&gt;] (mld_sendpack+0x1a0/0x1a8)
[  341.669640] [&lt;c0549c94&gt;] (mld_sendpack) from [&lt;c054b070&gt;] (mld_ifc_timer_expire+0x1cc/0x2e4)
[  341.678111] [&lt;c054b070&gt;] (mld_ifc_timer_expire) from [&lt;c0172e80&gt;] (call_timer_fn.constprop.3+0x24/0x98)
[  341.687527] [&lt;c0172e80&gt;] (call_timer_fn.constprop.3) from [&lt;c017309c&gt;] (run_timer_softirq+0x1a8/0x1e4)
[  341.696860] [&lt;c017309c&gt;] (run_timer_softirq) from [&lt;c01021e8&gt;] (__do_softirq+0x120/0x2b0)
[  341.705066] [&lt;c01021e8&gt;] (__do_softirq) from [&lt;c011c188&gt;] (irq_exit+0x78/0x84)
[  341.712317] [&lt;c011c188&gt;] (irq_exit) from [&lt;c015f0f8&gt;] (__handle_domain_irq+0x60/0xb4)
[  341.720179] [&lt;c015f0f8&gt;] (__handle_domain_irq) from [&lt;c037c584&gt;] (gic_handle_irq+0x4c/0x90)
[  341.728549] [&lt;c037c584&gt;] (gic_handle_irq) from [&lt;c0101a8c&gt;] (__irq_svc+0x6c/0x90)

Fixes: 20f2c5fa3af0 ("brcmfmac: add initial support for monitor mode")
Signed-off-by: Rafał Miłecki &lt;rafal@milecki.pl&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200327130307.26477-1-zajec5@gmail.com
</content>
</entry>
<entry>
<title>brcmfmac: add USB autosuspend feature support</title>
<updated>2020-03-26T09:44:18Z</updated>
<author>
<name>Wright Feng</name>
<email>wright.feng@cypress.com</email>
</author>
<published>2020-03-25T08:20:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=7f1d42304d933c310592c91df70b661965a36121'/>
<id>urn:sha1:7f1d42304d933c310592c91df70b661965a36121</id>
<content type='text'>
We add enable dynamic suspend (autosuspend) support in host driver, and
it can let platform cut down idle power consumption.
To support autosuspend feature in host driver, kernel need to be built
with CONFIG_USB_SUSPEND and autosuspend need to be turn on.
And we also replace wowl feature with adding "needs_remote_wakeup", so
that host still can be waken by wireless device.

Signed-off-by: Wright Feng &lt;wright.feng@cypress.com&gt;
Signed-off-by: Chi-Hsien Lin &lt;chi-hsien.lin@cypress.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/1585124429-97371-6-git-send-email-chi-hsien.lin@cypress.com
</content>
</entry>
<entry>
<title>brcmfmac: increase max hanger slots from 1K to 3K in fws layer</title>
<updated>2020-03-26T09:44:09Z</updated>
<author>
<name>Madhan Mohan R</name>
<email>MadhanMohan.R@cypress.com</email>
</author>
<published>2020-03-25T08:20:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2bc50d8828ad7cc52ecd99f50074aa25f957af41'/>
<id>urn:sha1:2bc50d8828ad7cc52ecd99f50074aa25f957af41</id>
<content type='text'>
Will enable FMAC to push more packets to bus tx queue and help
improve throughput when fws queuing is enabled. This change is
required to tune the throughput for passing WMM CERT tests.

Signed-off-by: Madhan Mohan R &lt;madhanmohan.r@cypress.com&gt;
Signed-off-by: Chi-hsien Lin &lt;chi-hsien.lin@cypress.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/1585124429-97371-5-git-send-email-chi-hsien.lin@cypress.com
</content>
</entry>
<entry>
<title>brcmfmac: fix the incorrect return value in brcmf_inform_single_bss().</title>
<updated>2020-03-26T09:44:01Z</updated>
<author>
<name>Raveendran Somu</name>
<email>raveendran.somu@cypress.com</email>
</author>
<published>2020-03-25T08:20:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bd9944918ceb28ede97f715d209e220db5e92c09'/>
<id>urn:sha1:bd9944918ceb28ede97f715d209e220db5e92c09</id>
<content type='text'>
The function brcmf_inform_single_bss returns the value as success,
even when the length exceeds the maximum value.
The fix is to send appropriate code on this error.
This issue is observed when Cypress test group reported random fmac
crashes when running their tests and the path was identified from the
crash logs. With this fix the random failure issue in Cypress test group
was resolved.

Reviewed-by: Arend van Spriel &lt;arend.vanspriel@broadcom.com&gt;
Signed-off-by: Raveendran Somu &lt;raveendran.somu@cypress.com&gt;
Signed-off-by: Chi-hsien Lin &lt;chi-hsien.lin@cypress.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/1585124429-97371-4-git-send-email-chi-hsien.lin@cypress.com
</content>
</entry>
<entry>
<title>brcmfmac: Fix double freeing in the fmac usb data path</title>
<updated>2020-03-26T09:43:53Z</updated>
<author>
<name>Raveendran Somu</name>
<email>raveendran.somu@cypress.com</email>
</author>
<published>2020-03-25T08:20:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=78179869dc3f5c0059bbf5d931a2717f1ad97ecd'/>
<id>urn:sha1:78179869dc3f5c0059bbf5d931a2717f1ad97ecd</id>
<content type='text'>
When the brcmf_fws_process_skb() fails to get hanger slot for
queuing the skb, it tries to free the skb.
But the caller brcmf_netdev_start_xmit() of that funciton frees
the packet on error return value.
This causes the double freeing and which caused the kernel crash.

Signed-off-by: Raveendran Somu &lt;raveendran.somu@cypress.com&gt;
Signed-off-by: Chi-hsien Lin &lt;chi-hsien.lin@cypress.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/1585124429-97371-3-git-send-email-chi-hsien.lin@cypress.com
</content>
</entry>
<entry>
<title>brcmfmac: Fix driver crash on USB control transfer timeout</title>
<updated>2020-03-26T09:43:45Z</updated>
<author>
<name>Raveendran Somu</name>
<email>raveendran.somu@cypress.com</email>
</author>
<published>2020-03-25T08:20:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=93a5bfbc7cad8bf3dea81c9bc07761c1226a0860'/>
<id>urn:sha1:93a5bfbc7cad8bf3dea81c9bc07761c1226a0860</id>
<content type='text'>
When the control transfer gets timed out, the error status
was returned without killing that urb, this leads to using
the same urb. This issue causes the kernel crash as the same
urb is sumbitted multiple times. The fix is to kill the
urb for timeout transfer before returning error

Signed-off-by: Raveendran Somu &lt;raveendran.somu@cypress.com&gt;
Signed-off-by: Chi-hsien Lin &lt;chi-hsien.lin@cypress.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/1585124429-97371-2-git-send-email-chi-hsien.lin@cypress.com
</content>
</entry>
<entry>
<title>brcmfmac: Replace zero-length array with flexible-array member</title>
<updated>2020-03-23T17:12:12Z</updated>
<author>
<name>Gustavo A. R. Silva</name>
<email>gustavo@embeddedor.com</email>
</author>
<published>2020-02-25T02:08:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=232c897eb5ca21fce241f75b98c78f2cb36af00f'/>
<id>urn:sha1:232c897eb5ca21fce241f75b98c78f2cb36af00f</id>
<content type='text'>
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:

struct foo {
        int stuff;
        struct boo array[];
};

By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.

Also, notice that, dynamic memory allocations won't be affected by
this change:

"Flexible array members have incomplete type, and so the sizeof operator
may not be applied. As a quirk of the original implementation of
zero-length arrays, sizeof evaluates to zero."[1]

This issue was found with the help of Coccinelle.

[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

Signed-off-by: Gustavo A. R. Silva &lt;gustavo@embeddedor.com&gt;
Acked-by: Arend van Spriel &lt;arend.vanspriel@broadcom.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200225020804.GA9428@embeddedor
</content>
</entry>
<entry>
<title>b43legacy: Use scnprintf() for avoiding potential buffer overflow</title>
<updated>2020-03-12T13:43:39Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2020-03-11T08:47:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d3f8c708c0d7c8b2b2bc5d3ba5c7d8a5a0af5f2b'/>
<id>urn:sha1:d3f8c708c0d7c8b2b2bc5d3ba5c7d8a5a0af5f2b</id>
<content type='text'>
Since snprintf() returns the would-be-output size instead of the
actual output size, the succeeding calls may go beyond the given
buffer limit.  Fix it by replacing with scnprintf().

Cc: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: b43-dev@lists.infradead.org
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>b43: Use scnprintf() for avoiding potential buffer overflow</title>
<updated>2020-03-12T13:43:37Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2020-03-11T08:47:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=68b02e0c512b3cd8dc18877d5fbe259687bccaec'/>
<id>urn:sha1:68b02e0c512b3cd8dc18877d5fbe259687bccaec</id>
<content type='text'>
Since snprintf() returns the would-be-output size instead of the
actual output size, the succeeding calls may go beyond the given
buffer limit.  Fix it by replacing with scnprintf().

Cc: b43-dev@lists.infradead.org
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>b43legacy: replace simple_strtol() with kstrtoint()</title>
<updated>2020-03-12T13:40:45Z</updated>
<author>
<name>chenqiwu</name>
<email>chenqiwu@xiaomi.com</email>
</author>
<published>2020-02-19T04:15:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=871b4b48cdbfe4fb7f687801fc265619b35cf476'/>
<id>urn:sha1:871b4b48cdbfe4fb7f687801fc265619b35cf476</id>
<content type='text'>
The simple_strtol() function is deprecated since it does not
check for the range overflow. Use kstrtoint() instead.

Signed-off-by: chenqiwu &lt;chenqiwu@xiaomi.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
</content>
</entry>
</feed>
