• Davide Ciminaghi's avatar
    net/ethernet: ks8851_mll fix rx frame buffer overflow · 8a9a0ea6
    Davide Ciminaghi authored
    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: default avatarDavide Ciminaghi <ciminaghi@gnudd.com>
    Signed-off-by: default avatarRaffaele Recalcati <raffaele.recalcati@bticino.it>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8a9a0ea6
ks8851_mll.c 41.8 KB