sctp: implement memory accounting on rx path
authorXin Long <lucien.xin@gmail.com>
Mon, 15 Apr 2019 09:15:07 +0000 (17:15 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Apr 2019 20:36:51 +0000 (13:36 -0700)
commit9dde27de3e5efa0d032f3c891a0ca833a0d31911
treebaba7e7942d6e6a3162db024a2995f306d0afad4
parent1033990ac5b2ab6cee93734cb6d301aa3a35bcaa
sctp: implement memory accounting on rx path

sk_forward_alloc's updating is also done on rx path, but to be consistent
we change to use sk_mem_charge() in sctp_skb_set_owner_r().

In sctp_eat_data(), it's not enough to check sctp_memory_pressure only,
which doesn't work for mem_cgroup_sockets_enabled, so we change to use
sk_under_memory_pressure().

When it's under memory pressure, sk_mem_reclaim() and sk_rmem_schedule()
should be called on both RENEGE or CHUNK DELIVERY path exit the memory
pressure status as soon as possible.

Note that sk_rmem_schedule() is using datalen to make things easy there.

Reported-by: Matteo Croce <mcroce@redhat.com>
Tested-by: Matteo Croce <mcroce@redhat.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sctp/sctp.h
net/sctp/sm_statefuns.c
net/sctp/ulpevent.c
net/sctp/ulpqueue.c