• Arnd Bergmann's avatar
    y2038: fix socket.h header inclusion · a623a7a1
    Arnd Bergmann authored
    Referencing the __kernel_long_t type caused some user space applications
    to stop compiling when they had not already included linux/posix_types.h,
    e.g.
    
    s/multicast.c -o ext/sockets/multicast.lo
    In file included from /builddir/build/BUILD/php-7.3.3/main/php.h:468,
                     from /builddir/build/BUILD/php-7.3.3/ext/sockets/sockets.c:27:
    /builddir/build/BUILD/php-7.3.3/ext/sockets/sockets.c: In function 'zm_startup_sockets':
    /builddir/build/BUILD/php-7.3.3/ext/sockets/sockets.c:776:40: error: '__kernel_long_t' undeclared (first use in this function)
      776 |  REGISTER_LONG_CONSTANT("SO_SNDTIMEO", SO_SNDTIMEO, CONST_CS | CONST_PERSISTENT);
    
    It is safe to include that header here, since it only contains kernel
    internal types that do not conflict with other user space types.
    
    It's still possible that some related build failures remain, but those
    are likely to be for code that is not already y2038 safe.
    Reported-by: default avatarLaura Abbott <labbott@redhat.com>
    Fixes: a9beb86a ("sock: Add SO_RCVTIMEO_NEW and SO_SNDTIMEO_NEW")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a623a7a1
socket.h 3.67 KB