• Arnd Bergmann's avatar
    ethtool: improve compat ioctl handling · 5b3a45ee
    Arnd Bergmann authored
    [ Upstream commit dd98d289 ]
    
    The ethtool compat ioctl handling is hidden away in net/socket.c,
    which introduces a couple of minor oddities:
    
    - The implementation may end up diverging, as seen in the RXNFC
      extension in commit 84a1d9c4
    
     ("net: ethtool: extend RXNFC
      API to support RSS spreading of filter matches") that does not work
      in compat mode.
    
    - Most architectures do not need the compat handling at all
      because u64 and compat_u64 have the same alignment.
    
    - On x86, the conversion is done for both x32 and i386 user space,
      but it's actually wrong to do it for x32 and cannot work there.
    
    - On 32-bit Arm, it never worked for compat oabi user space, since
      that needs to do the same conversion but does not.
    
    - It would be nice to get rid of both compat_alloc_user_space()
      and copy_in_user() throughout the kernel.
    
    None of these actually seems to be a serious problem that real
    users are likely to encounter, but fixing all of them actually
    leads to code that is both shorter and more readable.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    5b3a45ee
socket.c 88.2 KB