projects
/
GitHub
/
mt8127
/
android_kernel_alcatel_ttab.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v3.10.108' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git]
/
security
/
keys
/
encrypted-keys
/
encrypted.c
diff --git
a/security/keys/encrypted-keys/encrypted.c
b/security/keys/encrypted-keys/encrypted.c
index c4c8df4b214d9f0bc2f941e0144526b3260a7a1f..b7d7cffe73493fd5577f3ca05d2ae19d08beaac2 100644
(file)
--- a/
security/keys/encrypted-keys/encrypted.c
+++ b/
security/keys/encrypted-keys/encrypted.c
@@
-315,6
+315,13
@@
static struct key *request_user_key(const char *master_desc, u8 **master_key,
down_read(&ukey->sem);
upayload = ukey->payload.data;
down_read(&ukey->sem);
upayload = ukey->payload.data;
+ if (!upayload) {
+ /* key was revoked before we acquired its semaphore */
+ up_read(&ukey->sem);
+ key_put(ukey);
+ ukey = ERR_PTR(-EKEYREVOKED);
+ goto error;
+ }
*master_key = upayload->data;
*master_keylen = upayload->datalen;
error:
*master_key = upayload->data;
*master_keylen = upayload->datalen;
error:
@@
-428,7
+435,7
@@
static int init_blkcipher_desc(struct blkcipher_desc *desc, const u8 *key,
static struct key *request_master_key(struct encrypted_key_payload *epayload,
u8 **master_key, size_t *master_keylen)
{
static struct key *request_master_key(struct encrypted_key_payload *epayload,
u8 **master_key, size_t *master_keylen)
{
- struct key *mkey =
NULL
;
+ struct key *mkey =
ERR_PTR(-EINVAL)
;
if (!strncmp(epayload->master_desc, KEY_TRUSTED_PREFIX,
KEY_TRUSTED_PREFIX_LEN)) {
if (!strncmp(epayload->master_desc, KEY_TRUSTED_PREFIX,
KEY_TRUSTED_PREFIX_LEN)) {