net: sendmmsg should only return an error if no messages were sent
commit365f1cd4cadc46455db97d0b568ea7ad3af106be
authorAnton Blanchard <anton@samba.org>
Thu, 4 Aug 2011 14:07:38 +0000 (4 14:07 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Aug 2011 01:31:33 +0000 (15 18:31 -0700)
treed7bc8b9bf6188af0f46631322f5d0e8b6544c1c4
parentc82ac94469ab54ca57b05fd85ce709530d44002f
net: sendmmsg should only return an error if no messages were sent

commit 728ffb86f10873aaf4abd26dde691ee40ae731fe upstream.

sendmmsg uses a similar error return strategy as recvmmsg but it
turns out to be a confusing way to communicate errors.

The current code stores the error code away and returns it on the next
sendmmsg call. This means a call with completely valid arguments could
get an error from a previous call.

Change things so we only return an error if no datagrams could be sent.
If less than the requested number of messages were sent, the application
must retry starting at the first failed one and if the problem is
persistent the error will be returned.

This matches the behaviour of other syscalls like read/write - it
is not an error if less than the requested number of elements are sent.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/socket.c