summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Vander Stoep <jeffv@google.com>2015-04-20 17:45:42 -0700
committerLee Campbell <leecam@google.com>2015-09-25 08:54:22 -0700
commit91e7ba22651f87ccd6bb56d94ca72c878cff8f45 (patch)
treef287d2e928d8cba6c8657bdf4a8385095af9807a
parentc219dd65f40fd3cc1477f51ddbde1930358f3750 (diff)
downloadqcom-91e7ba22651f87ccd6bb56d94ca72c878cff8f45.tar.gz
SELinux: use deletion-safe iterator to free list
This code is not exercised by policy version 26, but will be upon upgrade to policy version 30. Bug: 18087110 Change-Id: I07c6f34607713294a6a12c43a64d9936f0602200 Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
-rw-r--r--security/selinux/avc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index 5c8e7cfa9de..f3dbbc0f15d 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -298,13 +298,15 @@ static void avc_operation_decision_free(
static void avc_operation_free(struct avc_operation_node *ops_node)
{
- struct avc_operation_decision_node *od_node;
+ struct avc_operation_decision_node *od_node, *tmp;
if (!ops_node)
return;
- list_for_each_entry(od_node, &ops_node->od_head, od_list)
+ list_for_each_entry_safe(od_node, tmp, &ops_node->od_head, od_list) {
+ list_del(&od_node->od_list);
avc_operation_decision_free(od_node);
+ }
kmem_cache_free(avc_operation_node_cachep, ops_node);
}