Skip to content
  • Maxime Jayat's avatar
    net: socket: fix recvmmsg not returning error from sock_error · e623a9e9
    Maxime Jayat authored
    Commit 34b88a68 ("net: Fix use after free in the recvmmsg exit path"),
    changed the exit path of recvmmsg to always return the datagrams
    variable and modified the error paths to set the variable to the error
    code returned by recvmsg if necessary.
    
    However in the case sock_error returned an error, the error code was
    then ignored, and recvmmsg returned 0.
    
    Change the error path of recvmmsg to correctly return the error code
    of sock_error.
    
    The bug was triggered by using recvmmsg on a CAN interface which was
    not up. Linux 4.6 and later return 0 in this case while earlier
    releases returned -ENETDOWN.
    
    Fixes: 34b88a68
    
     ("net: Fix use after free in the recvmmsg exit path")
    Signed-off-by: default avatarMaxime Jayat <maxime.jayat@mobile-devices.fr>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e623a9e9