linux/drivers/net/wireless
Stanislaw Gruszka b6213e413a rtl8187: fix regression on MIPS without coherent DMA
This patch fixes regression caused by commit a16dad7763 "MIPS: Fix
potencial corruption". That commit fixes one corruption scenario in
cost of adding another one, which actually start to cause crashes
on Yeeloong laptop when rtl8187 driver is used.

For correct DMA read operation on machines without DMA coherence, kernel
have to invalidate cache, such it will refill later with new data that
device wrote to memory, when that data is needed to process. We can only
invalidate full cache line. Hence when cache line includes both dma
buffer and some other data (written in cache, but not yet in main
memory), the other data can not hit memory due to invalidation. That
happen on rtl8187 where struct rtl8187_priv fields are located just
before and after small buffers that are passed to USB layer and DMA
is performed on them.

To fix the problem we align buffers and reserve space after them to make
them match cache line.

This patch does not resolve all possible MIPS problems entirely, for
that we have to assure that we always map cache aligned buffers for DMA,
what can be complex or even not possible. But patch fixes visible and
reproducible regression and seems other possible corruptions do not
happen in practice, since Yeeloong laptop works stable without rtl8187
driver.

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=54391

Reported-by: Petr Pisar <petr.pisar@atlas.cz>
Bisected-by: Tom Li <biergaizi2009@gmail.com>
Reported-and-tested-by: Tom Li <biergaizi2009@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Acked-by: Larry Finger <Larry.Finger@lwfinger.next>
Acked-by: Hin-Tak Leung <htl10@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-02-13 14:58:12 -05:00
..
ath ath5k: shifting the wrong variable for AR5K_AR5210 2014-02-13 14:58:12 -05:00
b43 b43: fix the wrong assignment of status.freq in b43_rx() 2014-01-23 14:02:45 -05:00
b43legacy b43legacy: Fix unload oops if firmware is not available 2014-01-13 14:50:03 -05:00
brcm80211 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-17 14:43:17 -05:00
cw1200 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-17 14:43:17 -05:00
hostap Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-10 10:59:40 -05:00
ipw2x00 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-10 10:59:40 -05:00
iwlegacy wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
iwlwifi iwlwifi: disable TX AMPDU by default for iwldvm 2014-02-13 15:24:35 +02:00
libertas Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
libertas_tf
mwifiex Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-24 13:25:15 -05:00
orinoco wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
p54 p54: clamp properly instead of just truncating 2014-01-13 14:50:06 -05:00
prism54 wireless: slight optimization of addr compare 2013-12-26 13:31:35 -05:00
rt2x00 rt2500: disable PS by default 2014-02-04 15:30:07 -05:00
rtl818x rtl8187: fix regression on MIPS without coherent DMA 2014-02-13 14:58:12 -05:00
rtlwifi rtlwifi: Fix incorrect return from rtl_ps_enable_nic() 2014-02-13 14:58:12 -05:00
ti Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-17 14:43:17 -05:00
zd1211rw zd1211rw: slight optimization of addr compare 2013-12-26 13:31:33 -05:00
adm8211.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-17 14:43:17 -05:00
adm8211.h
airo_cs.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
airo.c wireless: airo: remove unnecessary pci_set_drvdata() 2013-09-26 15:13:42 -04:00
airo.h
at76c50x-usb.c Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2014-01-13 14:40:59 -05:00
at76c50x-usb.h
atmel_cs.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
atmel_pci.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
atmel.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
atmel.h drivers/net/wireless: Fix FSF address in file headers 2013-12-11 10:56:20 -05:00
Kconfig
mac80211_hwsim.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-17 14:43:17 -05:00
mac80211_hwsim.h mac80211_hwsim: restore regulatory testing functionality 2014-01-10 20:12:59 +01:00
Makefile
mwl8k.c Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2014-01-13 14:40:59 -05:00
ray_cs.c drivers/net/wireless: Fix FSF address in file headers 2013-12-11 10:56:20 -05:00
ray_cs.h
rayctl.h
rndis_wlan.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
wl3501_cs.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-10 10:59:40 -05:00
wl3501.h
zd1201.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-08-28 10:36:09 -04:00
zd1201.h