Re: [PATCH] net: socket: fix recvmmsg not returning error from sock_error

From: David Miller
Date: Tue Feb 21 2017 - 13:38:07 EST


From: Maxime Jayat <maxime.jayat@xxxxxxxxxxxxxxxxx>
Date: Tue, 21 Feb 2017 18:35:51 +0100

> Commit 34b88a68f26a ("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: 34b88a68f26a ("net: Fix use after free in the recvmmsg exit path")
> Signed-off-by: Maxime Jayat <maxime.jayat@xxxxxxxxxxxxxxxxx>

Good catch, applied and queued up for -stable.