diff options
Diffstat (limited to 'security')
| -rw-r--r-- | security/inode.c | 4 | ||||
| -rw-r--r-- | security/keys/request_key.c | 13 | ||||
| -rw-r--r-- | security/selinux/ss/avtab.h | 2 |
3 files changed, 11 insertions, 8 deletions
diff --git a/security/inode.c b/security/inode.c index c3a793881d04..1c812e874504 100644 --- a/security/inode.c +++ b/security/inode.c | |||
| @@ -161,13 +161,13 @@ static int create_by_name(const char *name, mode_t mode, | |||
| 161 | 161 | ||
| 162 | mutex_lock(&parent->d_inode->i_mutex); | 162 | mutex_lock(&parent->d_inode->i_mutex); |
| 163 | *dentry = lookup_one_len(name, parent, strlen(name)); | 163 | *dentry = lookup_one_len(name, parent, strlen(name)); |
| 164 | if (!IS_ERR(dentry)) { | 164 | if (!IS_ERR(*dentry)) { |
| 165 | if ((mode & S_IFMT) == S_IFDIR) | 165 | if ((mode & S_IFMT) == S_IFDIR) |
| 166 | error = mkdir(parent->d_inode, *dentry, mode); | 166 | error = mkdir(parent->d_inode, *dentry, mode); |
| 167 | else | 167 | else |
| 168 | error = create(parent->d_inode, *dentry, mode); | 168 | error = create(parent->d_inode, *dentry, mode); |
| 169 | } else | 169 | } else |
| 170 | error = PTR_ERR(dentry); | 170 | error = PTR_ERR(*dentry); |
| 171 | mutex_unlock(&parent->d_inode->i_mutex); | 171 | mutex_unlock(&parent->d_inode->i_mutex); |
| 172 | 172 | ||
| 173 | return error; | 173 | return error; |
diff --git a/security/keys/request_key.c b/security/keys/request_key.c index 03fe63ed55bd..ea97c3120d66 100644 --- a/security/keys/request_key.c +++ b/security/keys/request_key.c | |||
| @@ -68,7 +68,8 @@ static int call_sbin_request_key(struct key_construction *cons, | |||
| 68 | { | 68 | { |
| 69 | const struct cred *cred = current_cred(); | 69 | const struct cred *cred = current_cred(); |
| 70 | key_serial_t prkey, sskey; | 70 | key_serial_t prkey, sskey; |
| 71 | struct key *key = cons->key, *authkey = cons->authkey, *keyring; | 71 | struct key *key = cons->key, *authkey = cons->authkey, *keyring, |
| 72 | *session; | ||
| 72 | char *argv[9], *envp[3], uid_str[12], gid_str[12]; | 73 | char *argv[9], *envp[3], uid_str[12], gid_str[12]; |
| 73 | char key_str[12], keyring_str[3][12]; | 74 | char key_str[12], keyring_str[3][12]; |
| 74 | char desc[20]; | 75 | char desc[20]; |
| @@ -112,10 +113,12 @@ static int call_sbin_request_key(struct key_construction *cons, | |||
| 112 | if (cred->tgcred->process_keyring) | 113 | if (cred->tgcred->process_keyring) |
| 113 | prkey = cred->tgcred->process_keyring->serial; | 114 | prkey = cred->tgcred->process_keyring->serial; |
| 114 | 115 | ||
| 115 | if (cred->tgcred->session_keyring) | 116 | rcu_read_lock(); |
| 116 | sskey = rcu_dereference(cred->tgcred->session_keyring)->serial; | 117 | session = rcu_dereference(cred->tgcred->session_keyring); |
| 117 | else | 118 | if (!session) |
| 118 | sskey = cred->user->session_keyring->serial; | 119 | session = cred->user->session_keyring; |
| 120 | sskey = session->serial; | ||
| 121 | rcu_read_unlock(); | ||
| 119 | 122 | ||
| 120 | sprintf(keyring_str[2], "%d", sskey); | 123 | sprintf(keyring_str[2], "%d", sskey); |
| 121 | 124 | ||
diff --git a/security/selinux/ss/avtab.h b/security/selinux/ss/avtab.h index 8da6a8428086..cd4f734e2749 100644 --- a/security/selinux/ss/avtab.h +++ b/security/selinux/ss/avtab.h | |||
| @@ -82,7 +82,7 @@ struct avtab_node *avtab_search_node_next(struct avtab_node *node, int specified | |||
| 82 | void avtab_cache_init(void); | 82 | void avtab_cache_init(void); |
| 83 | void avtab_cache_destroy(void); | 83 | void avtab_cache_destroy(void); |
| 84 | 84 | ||
| 85 | #define MAX_AVTAB_HASH_BITS 13 | 85 | #define MAX_AVTAB_HASH_BITS 11 |
| 86 | #define MAX_AVTAB_HASH_BUCKETS (1 << MAX_AVTAB_HASH_BITS) | 86 | #define MAX_AVTAB_HASH_BUCKETS (1 << MAX_AVTAB_HASH_BITS) |
| 87 | #define MAX_AVTAB_HASH_MASK (MAX_AVTAB_HASH_BUCKETS-1) | 87 | #define MAX_AVTAB_HASH_MASK (MAX_AVTAB_HASH_BUCKETS-1) |
| 88 | #define MAX_AVTAB_SIZE MAX_AVTAB_HASH_BUCKETS | 88 | #define MAX_AVTAB_SIZE MAX_AVTAB_HASH_BUCKETS |
