• Craig Brind's avatar
    [PATCH] via-rhine: zero pad short packets on Rhine I ethernet cards · 3e0d167a
    Craig Brind authored
    Fixes Rhine I cards disclosing fragments of previously transmitted frames
    in new transmissions.
    
    Before transmission, any socket buffer (skb) shorter than the ethernet
    minimum length of 60 bytes was zero-padded.  On Rhine I cards the data can
    later be copied into an aligned transmission buffer without copying this
    padding.  This resulted in the transmission of the frame with the extra
    bytes beyond the provided content leaking the previous contents of this
    buffer on to the network.
    
    Now zero-padding is repeated in the local aligned buffer if one is used.
    
    Following a suggestion from the via-rhine maintainer, no attempt is made
    here to avoid the duplicated effort of padding the skb if it is known that
    an aligned buffer will definitely be used.  This is to make the change
    "obviously correct" and allow it to be applied to a stable kernel if
    necessary.  There is no change to the flow of control and the changes are
    only to the Rhine I code path.
    
    The patch has run on an in-service Rhine-I host without incident.  Frames
    shorter than 60 bytes are now correctly zero-padded when captured on a
    separate host.  I see no unusual stats reported by ifconfig, and no unusual
    log messages.
    Signed-off-by: default avatarCraig Brind <craigbrind@gmail.com>
    Signed-off-by: default avatarRoger Luethi <rl@hellgate.ch>
    Cc: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    3e0d167a
via-rhine.c 58.1 KB