diff options
author | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2012-01-17 15:40:02 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2012-01-17 18:41:30 -0500 |
commit | 6ac6172a935d1faf7ef259802267657bc0007a62 (patch) | |
tree | 034c1a79a3d401926f6b968eb270d34f561e50f1 | |
parent | ee0b31a25a010116f44fca6c96f4516d417793dd (diff) |
encrypted-keys: fix rcu and sparse messages
Enabling CONFIG_PROVE_RCU and CONFIG_SPARSE_RCU_POINTER resulted in
"suspicious rcu_dereference_check() usage!" and "incompatible types
in comparison expression (different address spaces)" messages.
Access the masterkey directly when holding the rwsem.
Changelog v1:
- Use either rcu_read_lock()/rcu_derefence_key()/rcu_read_unlock()
or remove the unnecessary rcu_derefence() - David Howells
Reported-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
Signed-off-by: Mimi Zohar <zohar@us.ibm.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
-rw-r--r-- | security/keys/encrypted-keys/encrypted.c | 2 | ||||
-rw-r--r-- | security/keys/encrypted-keys/masterkey_trusted.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/security/keys/encrypted-keys/encrypted.c b/security/keys/encrypted-keys/encrypted.c index d91efb6901e9..2d1bb8af7696 100644 --- a/security/keys/encrypted-keys/encrypted.c +++ b/security/keys/encrypted-keys/encrypted.c | |||
@@ -314,7 +314,7 @@ static struct key *request_user_key(const char *master_desc, u8 **master_key, | |||
314 | goto error; | 314 | goto error; |
315 | 315 | ||
316 | down_read(&ukey->sem); | 316 | down_read(&ukey->sem); |
317 | upayload = rcu_dereference(ukey->payload.data); | 317 | upayload = ukey->payload.data; |
318 | *master_key = upayload->data; | 318 | *master_key = upayload->data; |
319 | *master_keylen = upayload->datalen; | 319 | *master_keylen = upayload->datalen; |
320 | error: | 320 | error: |
diff --git a/security/keys/encrypted-keys/masterkey_trusted.c b/security/keys/encrypted-keys/masterkey_trusted.c index 8c16c3e472e7..013f7e5d3a2f 100644 --- a/security/keys/encrypted-keys/masterkey_trusted.c +++ b/security/keys/encrypted-keys/masterkey_trusted.c | |||
@@ -39,7 +39,7 @@ struct key *request_trusted_key(const char *trusted_desc, | |||
39 | goto error; | 39 | goto error; |
40 | 40 | ||
41 | down_read(&tkey->sem); | 41 | down_read(&tkey->sem); |
42 | tpayload = rcu_dereference(tkey->payload.data); | 42 | tpayload = tkey->payload.data; |
43 | *master_key = tpayload->key; | 43 | *master_key = tpayload->key; |
44 | *master_keylen = tpayload->key_len; | 44 | *master_keylen = tpayload->key_len; |
45 | error: | 45 | error: |