mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-15 10:24:44 +08:00
c3594559f4
When downloading the reserved page, the first page always contains
a beacon for the firmware to reference. For non-beaconing modes such
as station mode, also put a blank skb with length=1.
And for the beaconing modes, driver will get a real beacon with a
length approximate to the page size. But as the beacon is always put
at the first page, it does not need a tx_desc, because the TX path
will generate one when TXing the reserved page to the hardware. So we
could allocate a buffer with a size smaller than the reserved page,
when using memcpy() to copy the content of reserved page to the buffer,
the over-sized reserved page will violate the kernel memory.
To fix it, add the tx_desc before memcpy() the reserved packets to
the buffer, then we can get SKBs with correct length when counting
the pages in total. And for page 0, count the extra tx_desc_sz that
the TX path will generate. This way, the first beacon that allocated
without tx_desc can be counted with the extra tx_desc_sz to get
actual pages it requires.
Fixes:
|
||
---|---|---|
.. | ||
admtek | ||
ath | ||
atmel | ||
broadcom | ||
cisco | ||
intel | ||
intersil | ||
marvell | ||
mediatek | ||
quantenna | ||
ralink | ||
realtek | ||
rsi | ||
st | ||
ti | ||
zydas | ||
Kconfig | ||
mac80211_hwsim.c | ||
mac80211_hwsim.h | ||
Makefile | ||
ray_cs.c | ||
ray_cs.h | ||
rayctl.h | ||
rndis_wlan.c | ||
virt_wifi.c | ||
wl3501_cs.c | ||
wl3501.h |