summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-11-09 01:36:49 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-09 01:36:48 -0800
commitaaacae8143a51f3ad65d35640933db4df07f9cba (patch)
tree1efa0f865125e184f8aa6159c5d893c30b1b8861 /fs
parent2a8246c9d1bea924727122078da9cf6c20cfc60a (diff)
parent985aecee1dfefe1471290deffdebd2a9a2f073c9 (diff)
Merge "Merge android-4.4@ceee5bd (v4.4.95) into msm-4.4"
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/crypto_key.c6
-rw-r--r--fs/fscache/object-list.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/fs/ext4/crypto_key.c b/fs/ext4/crypto_key.c
index 363e4c6bf37f..15ebac242288 100644
--- a/fs/ext4/crypto_key.c
+++ b/fs/ext4/crypto_key.c
@@ -313,6 +313,12 @@ retry:
}
down_read(&keyring_key->sem);
ukp = user_key_payload(keyring_key);
+ if (!ukp) {
+ /* key was revoked before we acquired its semaphore */
+ res = -EKEYREVOKED;
+ up_read(&keyring_key->sem);
+ goto out;
+ }
if (ukp->datalen != sizeof(struct ext4_encryption_key)) {
res = -EINVAL;
up_read(&keyring_key->sem);
diff --git a/fs/fscache/object-list.c b/fs/fscache/object-list.c
index 6b028b7c4250..926580a85153 100644
--- a/fs/fscache/object-list.c
+++ b/fs/fscache/object-list.c
@@ -330,6 +330,13 @@ static void fscache_objlist_config(struct fscache_objlist_data *data)
rcu_read_lock();
confkey = user_key_payload(key);
+ if (!confkey) {
+ /* key was revoked */
+ rcu_read_unlock();
+ key_put(key);
+ goto no_config;
+ }
+
buf = confkey->data;
for (len = confkey->datalen - 1; len >= 0; len--) {