linux-brain/net/rxrpc
David Howells c7aa592a9c rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket
commit 0e631eee17dcea576ab922fa70e4fdbd596ee452 upstream.

Fix the DATA packet transmission to disable nofrag for UDPv4 on an AF_INET6
socket as well as UDPv6 when trying to transmit fragmentably.

Without this, packets filled to the normal size used by the kernel AFS
client of 1412 bytes be rejected by udp_sendmsg() with EMSGSIZE
immediately.  The ->sk_error_report() notification hook is called, but
rxrpc doesn't generate a trace for it.

This is a temporary fix; a more permanent solution needs to involve
changing the size of the packets being filled in accordance with the MTU,
which isn't currently done in AF_RXRPC.  The reason for not doing so was
that, barring the last packet in an rx jumbo packet, jumbos can only be
assembled out of 1412-byte packets - and the plan was to construct jumbos
on the fly at transmission time.

Also, there's no point turning on IPV6_MTU_DISCOVER, since IPv6 has to
engage in this anyway since fragmentation is only done by the sender.  We
can then condense the switch-statement in rxrpc_send_data_packet().

Fixes: 75b54cb57c ("rxrpc: Add IPv6 support")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-02 17:25:51 +02:00
..
af_rxrpc.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:33:54 -08:00
ar-internal.h rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect 2020-02-11 04:33:54 -08:00
call_accept.c rxrpc: Fix trace-after-put looking at the put connection record 2020-01-27 14:51:16 +01:00
call_event.c rxrpc: Fix lockup due to no error backoff after ack transmit error 2018-11-23 08:17:07 +01:00
call_object.c rxrpc: Fix call RCU cleanup using non-bh-safe locks 2020-02-28 16:39:00 +01:00
conn_client.c rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect 2020-02-11 04:33:54 -08:00
conn_event.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:33:54 -08:00
conn_object.c rxrpc: Fix service call disconnection 2020-02-11 04:34:19 -08:00
conn_service.c rxrpc: Fix trace-after-put looking at the put connection record 2020-01-27 14:51:16 +01:00
input.c rxrpc: Fix insufficient receive notification generation 2020-02-11 04:33:54 -08:00
insecure.c rxrpc: Trace protocol errors in received packets 2017-04-06 11:09:39 +01:00
Kconfig rxrpc: Add config to inject packet loss 2016-09-17 11:24:04 +01:00
key.c KEYS: Don't write out to userspace while holding key semaphore 2020-04-23 10:30:24 +02:00
local_event.c rxrpc: Trace packet transmission 2018-08-01 13:28:23 +01:00
local_object.c rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket 2020-05-02 17:25:51 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
misc.c rxrpc: Fix call timeouts 2017-11-24 10:18:41 +00:00
net_ns.c rxrpc: Fix the keepalive generator [ver #2] 2018-08-08 19:10:26 -07:00
output.c rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket 2020-05-02 17:25:51 +02:00
peer_event.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:33:54 -08:00
peer_object.c rxrpc: Fix trace-after-put looking at the put peer record 2019-11-06 13:06:24 +01:00
proc.c rxrpc: Remove set but not used variable 'nowj' 2018-08-02 10:18:20 -07:00
protocol.h rxrpc: Improve up-front incoming packet checking 2018-09-28 10:32:31 +01:00
recvmsg.c rxrpc: bad unlock balance in rxrpc_recvmsg 2019-02-12 19:47:22 +01:00
rxkad.c Merge ra.kernel.org:/pub/scm/linux/kernel/git/davem/net 2018-08-09 11:52:36 -07:00
security.c rxrpc: remove unused static variables 2018-03-30 21:04:44 +01:00
sendmsg.c rxrpc: Fix sendmsg(MSG_WAITALL) handling 2020-04-13 10:45:04 +02:00
skbuff.c net: convert sk_buff.users from atomic_t to refcount_t 2017-07-01 07:39:07 -07:00
sysctl.c rxrpc: remove redundant static int 'zero' 2018-08-11 11:25:18 -07:00
utils.c rxrpc: Fix IPv6 support 2017-08-29 10:55:20 +01:00