diff options
Diffstat (limited to 'security')
-rw-r--r-- | security/integrity/ima/ima_iint.c | 3 | ||||
-rw-r--r-- | security/keys/gc.c | 3 | ||||
-rw-r--r-- | security/keys/keyring.c | 4 | ||||
-rw-r--r-- | security/selinux/ss/ebitmap.c | 2 |
4 files changed, 7 insertions, 5 deletions
diff --git a/security/integrity/ima/ima_iint.c b/security/integrity/ima/ima_iint.c index 0d83edcfc402..2d4d05d92fda 100644 --- a/security/integrity/ima/ima_iint.c +++ b/security/integrity/ima/ima_iint.c | |||
@@ -63,12 +63,11 @@ int ima_inode_alloc(struct inode *inode) | |||
63 | spin_lock(&ima_iint_lock); | 63 | spin_lock(&ima_iint_lock); |
64 | rc = radix_tree_insert(&ima_iint_store, (unsigned long)inode, iint); | 64 | rc = radix_tree_insert(&ima_iint_store, (unsigned long)inode, iint); |
65 | spin_unlock(&ima_iint_lock); | 65 | spin_unlock(&ima_iint_lock); |
66 | radix_tree_preload_end(); | ||
66 | out: | 67 | out: |
67 | if (rc < 0) | 68 | if (rc < 0) |
68 | kmem_cache_free(iint_cache, iint); | 69 | kmem_cache_free(iint_cache, iint); |
69 | 70 | ||
70 | radix_tree_preload_end(); | ||
71 | |||
72 | return rc; | 71 | return rc; |
73 | } | 72 | } |
74 | 73 | ||
diff --git a/security/keys/gc.c b/security/keys/gc.c index 4770be375ffe..19902319d097 100644 --- a/security/keys/gc.c +++ b/security/keys/gc.c | |||
@@ -77,7 +77,8 @@ static bool key_gc_keyring(struct key *keyring, time_t limit) | |||
77 | goto dont_gc; | 77 | goto dont_gc; |
78 | 78 | ||
79 | /* scan the keyring looking for dead keys */ | 79 | /* scan the keyring looking for dead keys */ |
80 | klist = rcu_dereference(keyring->payload.subscriptions); | 80 | klist = rcu_dereference_check(keyring->payload.subscriptions, |
81 | lockdep_is_held(&key_serial_lock)); | ||
81 | if (!klist) | 82 | if (!klist) |
82 | goto dont_gc; | 83 | goto dont_gc; |
83 | 84 | ||
diff --git a/security/keys/keyring.c b/security/keys/keyring.c index 8ec02746ca99..e814d2109f8e 100644 --- a/security/keys/keyring.c +++ b/security/keys/keyring.c | |||
@@ -151,7 +151,9 @@ static void keyring_destroy(struct key *keyring) | |||
151 | write_unlock(&keyring_name_lock); | 151 | write_unlock(&keyring_name_lock); |
152 | } | 152 | } |
153 | 153 | ||
154 | klist = rcu_dereference(keyring->payload.subscriptions); | 154 | klist = rcu_dereference_check(keyring->payload.subscriptions, |
155 | rcu_read_lock_held() || | ||
156 | atomic_read(&keyring->usage) == 0); | ||
155 | if (klist) { | 157 | if (klist) { |
156 | for (loop = klist->nkeys - 1; loop >= 0; loop--) | 158 | for (loop = klist->nkeys - 1; loop >= 0; loop--) |
157 | key_put(klist->keys[loop]); | 159 | key_put(klist->keys[loop]); |
diff --git a/security/selinux/ss/ebitmap.c b/security/selinux/ss/ebitmap.c index 68c7348d1acc..04b6145d767f 100644 --- a/security/selinux/ss/ebitmap.c +++ b/security/selinux/ss/ebitmap.c | |||
@@ -128,7 +128,7 @@ int ebitmap_netlbl_export(struct ebitmap *ebmap, | |||
128 | cmap_idx = delta / NETLBL_CATMAP_MAPSIZE; | 128 | cmap_idx = delta / NETLBL_CATMAP_MAPSIZE; |
129 | cmap_sft = delta % NETLBL_CATMAP_MAPSIZE; | 129 | cmap_sft = delta % NETLBL_CATMAP_MAPSIZE; |
130 | c_iter->bitmap[cmap_idx] | 130 | c_iter->bitmap[cmap_idx] |
131 | |= e_iter->maps[cmap_idx] << cmap_sft; | 131 | |= e_iter->maps[i] << cmap_sft; |
132 | } | 132 | } |
133 | e_iter = e_iter->next; | 133 | e_iter = e_iter->next; |
134 | } | 134 | } |