forked from rubenslte/android_kernel_samsung_msm8226
A sock_tag_entry can only be part of one process's pqd_entry->sock_tag_list. Retagging the socket only updates sock_tag_entry->tag, and does not add the tag entry to the current process's pqd_entry list, nor update sock_tag_entry->pid. So the sock_tag_entry is only ever present in the pqd_entry list of the process that initially tagged the socket. A sock_tag_entry can also get created and not be added to any process's pqd_entry list. This happens if the process that initially tags the socket has not opened /dev/xt_qtaguid. ctrl_cmd_untag() supports untagging from a context other than the process that initially tagged the socket. Currently, the sock_tag_entry is only removed from its containing pqd_entry->sock_tag_list if the process that does the untagging has opened /dev/xt_qtaguid. However, the tag entry should always be deleted from its pqd entry list (if present). Issue: SEC-2842 Bug: 176919394 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I5b6f0c36c0ebefd98cc6873a4057104c7d885ccc (cherry picked from commit 8f9138d6c464a60f37f1b293bc61ccbcce6210f6)