]> git.karo-electronics.de Git - karo-tx-linux.git/commit
net/ethernet: ks8851_mll fix rx frame buffer overflow
authorDavide Ciminaghi <ciminaghi@gnudd.com>
Fri, 13 Apr 2012 04:48:25 +0000 (04:48 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 May 2012 12:14:24 +0000 (13:14 +0100)
commit464f9a7c469124bb0f29fdd2d15aad8af16522ef
treea8da1c14608dfa917e58d1b5e042bd83f31e54bd
parente09252e4613a16a79dfa15df731cb0e6f7f57118
net/ethernet: ks8851_mll fix rx frame buffer overflow

[ Upstream commit 8a9a0ea6032186e3030419262678d652b88bf6a8 ]

At the beginning of ks_rcv(), a for loop retrieves the
header information relevant to all the frames stored
in the mac's internal buffers. The number of pending
frames is stored as an 8 bits field in KS_RXFCTR.
If interrupts are disabled long enough to allow for more than
32 frames to accumulate in the MAC's internal buffers, a buffer
overflow occurs.
This patch fixes the problem by making the
driver's frame_head_info buffer big enough.
Well actually, since the chip appears to have 12K of
internal rx buffers and the shortest ethernet frame should
be 64 bytes long, maybe the limit could be set to
12*1024/64 = 192 frames, but 255 should be safer.

Signed-off-by: Davide Ciminaghi <ciminaghi@gnudd.com>
Signed-off-by: Raffaele Recalcati <raffaele.recalcati@bticino.it>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/ethernet/micrel/ks8851_mll.c