• A
    y2038: fix socket.h header inclusion · a623a7a1
    Arnd Bergmann 提交于
    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: NLaura Abbott <labbott@redhat.com>
    Fixes: a9beb86a ("sock: Add SO_RCVTIMEO_NEW and SO_SNDTIMEO_NEW")
    Signed-off-by: NArnd Bergmann <arnd@arndb.de>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    a623a7a1
socket.h 3.6 KB