kernel: bgmac: rework patch checking packet length
authorhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 8 Apr 2014 19:50:17 +0000 (19:50 +0000)
committerhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 8 Apr 2014 19:50:17 +0000 (19:50 +0000)
commit421797fed79eb198eae103fd61c9609eb7a09219
tree11ffccb02373e0e5ab762cb7c4b59351f84da43d
parent1972881c20e5f43dd1bdb7f5a6d9e7423bcfd674
kernel: bgmac: rework patch checking packet length

This bgmac patch was an attempt to fix/workaround bug reported in
https://dev.openwrt.org/ticket/7198 noticed on WNR3500L.
Patch assumed length reported by the hardware was 0 and was trying to
read it until getting a different value. This was actually the opposite.
Lenghts were some invalid & huge values that resulted in skb_over_panic.
For example:
skbuff: skb_over_panic: text:83b21074 len:57222 (...)
skbuff: skb_over_panic: text:87af1024 len:43226 (...)
skbuff: skb_over_panic: text:87af5024 len:8739 (...)

So instead of that not-working patch checking for 0, write a new one
checking for huge values. In case something like that happens, dump
hardware state and drop the packet.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40424 3c298f89-4303-0410-b956-a3cf2f4a3e73
target/linux/generic/patches-3.10/775-bgmac-check-length-of-received-frame.patch
target/linux/generic/patches-3.12/775-bgmac-check-length-of-received-frame.patch [new file with mode: 0644]
target/linux/generic/patches-3.13/775-bgmac-check-length-of-received-frame.patch [new file with mode: 0644]
target/linux/generic/patches-3.14/775-bgmac-check-length-of-received-frame.patch [new file with mode: 0644]