• Arnd Bergmann's avatar
    packet: clarify timestamp overflow · d413fcb4
    Arnd Bergmann authored
    The memory mapped packet socket data structure in version 1 through 3
    all contain 32-bit second values for the packet time stamps, which makes
    them suffer from the overflow of time_t in y2038 or y2106 (depending
    on whether user space interprets the value as signed or unsigned).
    
    The implementation uses the deprecated getnstimeofday() function.
    
    In order to get rid of that, this changes the code to use
    ktime_get_real_ts64() as a replacement, documenting the nature of the
    overflow. As long as the user applications treat the timestamps as
    unsigned, or only use the difference between timestamps, they are
    fine, and changing the timestamps to 64-bit wouldn't require a more
    invasive user space API change.
    
    Note: a lot of other APIs suffer from incompatible structures when
    time_t gets redefined to 64-bit in 32-bit user space, but this one
    does not.
    Acked-by: default avatarWillem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/lkml/CAF=yD-Jomr-gWSR-EBNKnSpFL46UeG564FLfqTCMNEm-prEaXA@mail.gmail.com/T/#uSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    d413fcb4
af_packet.c 109 KB