Skip to content
  • Francois Romieu's avatar
    [PATCH] r8169: incoming frame length check · 126fa4b9
    Francois Romieu authored
    
      
      The size of the incoming frame is not correctly checked.
      
      The RxMaxSize register (0xDA) does not work as expected and incoming
      frames whose size exceeds the MTU actually end spanning multiple
      descriptors. The first Rx descriptor contains the size of the whole
      frame (or some garbage in its place). The driver does not expect
      something above the space allocated to the current skb and crashes
      loudly when it issues a skb_put.
      
      The fix contains two parts:
      - disable hardware Rx size filtering: so far it only proved to be able
        to trigger some new fancy errors;
      - drop multi-descriptors frame: as the driver allocates MTU sized Rx
        buffers, it provides an adequate filtering.
      
      As a bonus, wrong descriptors were not returned to the asic after their
      processing.
      
    Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
    126fa4b9