linux/net/mptcp
Paolo Abeni ce599c5163 mptcp: properly account bulk freed memory
After commit 879526030c ("mptcp: protect the rx path with
the msk socket spinlock") the rmem currently used by a given
msk is really sk_rmem_alloc - rmem_released.

The safety check in mptcp_data_ready() does not take the above
in due account, as a result legit incoming data is kept in
subflow receive queue with no reason, delaying or blocking
MPTCP-level ack generation.

This change addresses the issue introducing a new helper to fetch
the rmem memory and using it as needed. Additionally add a MIB
counter for the exceptional event described above - the peer is
misbehaving.

Finally, introduce the required annotation when rmem_released is
updated.

Fixes: 879526030c ("mptcp: protect the rx path with the msk socket spinlock")
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/211
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-07-09 18:38:53 -07:00
..
crypto_test.c mptcp: move crypto test to KUNIT 2020-06-26 16:21:39 -07:00
crypto.c kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
ctrl.c mptcp: add sysctl allow_join_initial_addr_port 2021-06-22 14:36:01 -07:00
diag.c mptcp: allow dumping subflow context to userspace 2020-03-29 22:14:48 -07:00
Kconfig kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
Makefile kunit: mptcp: adhere to KUNIT formatting standard 2021-04-16 17:10:40 -07:00
mib.c mptcp: properly account bulk freed memory 2021-07-09 18:38:53 -07:00
mib.h mptcp: properly account bulk freed memory 2021-07-09 18:38:53 -07:00
mptcp_diag.c mptcp: add csum_enabled in mptcp_sock 2021-06-18 11:40:11 -07:00
options.c mptcp: avoid processing packet if a subflow reset 2021-07-09 18:38:53 -07:00
pm_netlink.c mptcp: add deny_join_id0 in mptcp_options_received 2021-06-22 14:36:01 -07:00
pm.c mptcp: add deny_join_id0 in mptcp_options_received 2021-06-22 14:36:01 -07:00
protocol.c mptcp: properly account bulk freed memory 2021-07-09 18:38:53 -07:00
protocol.h mptcp: properly account bulk freed memory 2021-07-09 18:38:53 -07:00
sockopt.c net: sock: extend SO_TIMESTAMPING for PHC binding 2021-07-01 13:08:18 -07:00
subflow.c mptcp: fix syncookie process if mptcp can not_accept new subflow 2021-07-09 18:38:53 -07:00
syncookies.c mptcp: fix warning in __skb_flow_dissect() when do syn cookie for subflow join 2021-07-09 18:38:53 -07:00
token_test.c mptcp: introduce token KUNIT self-tests 2020-06-26 16:21:39 -07:00
token.c mptcp: using TOKEN_MAX_RETRIES instead of magic number 2021-05-28 13:59:15 -07:00