diff options
| author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-11-09 01:36:49 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-11-09 01:36:48 -0800 |
| commit | aaacae8143a51f3ad65d35640933db4df07f9cba (patch) | |
| tree | 1efa0f865125e184f8aa6159c5d893c30b1b8861 /fs | |
| parent | 2a8246c9d1bea924727122078da9cf6c20cfc60a (diff) | |
| parent | 985aecee1dfefe1471290deffdebd2a9a2f073c9 (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.c | 6 | ||||
| -rw-r--r-- | fs/fscache/object-list.c | 7 |
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--) { |
