ANDROID: Add untag hacks to inet_release function
authorChenbo Feng <fengc@google.com>
Wed, 19 Apr 2017 21:22:47 +0000 (14:22 -0700)
committerChenbo Feng <fengc@google.com>
Tue, 9 May 2017 03:03:11 +0000 (03:03 +0000)
commit875e52672dbf33a31a830dfd1326ac8af582b29f
treeab19a2a2654667704aa63804e0209c11f77b019e
parent95c782ac1d4dd6bc6b8b71e1684fe368f8856df9
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