ANDROID: Add untag hacks to inet_release function
authorChenbo Feng <fengc@google.com>
Wed, 19 Apr 2017 21:22:47 +0000 (14:22 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Thu, 25 May 2017 11:07:25 +0000 (16:37 +0530)
commit182e12b8af5829a27e154391274a57b2f38180a8
tree4fb150cc782c7ab5a8112f0ca15d906fe0133ff5
parentd5dec18f8f2e7ba8536338ca312018ec4964b3e2
ANDROID: Add untag hacks to inet_release function

To prevent protential risk of memory leak caused by closing socket with
out untag it from qtaguid module, the qtaguid module now do not hold any
socket file reference count. Instead, it will increase the sk_refcnt of
the sk struct to prevent a reuse of the socket pointer.  And when a socket
is released. It will delete the tag if the socket is previously tagged so
no more resources is held by xt_qtaguid moudle. A flag is added to the untag
process to prevent possible kernel crash caused by fail to delete
corresponding socket_tag_entry list.
Bug: 36374484
Test: compile and run test under system/extra/test/iptables,
      run cts -m CtsNetTestCases -t android.net.cts.SocketRefCntTest

Signed-off-by: Chenbo Feng <fengc@google.com>
Change-Id: Iea7c3bf0c59b9774a5114af905b2405f6bc9ee52
include/linux/netfilter/xt_qtaguid.h
net/ipv4/af_inet.c
net/netfilter/xt_qtaguid.c
net/netfilter/xt_qtaguid_internal.h
net/netfilter/xt_qtaguid_print.c