diff options
author | David S. Miller <davem@davemloft.net> | 2017-10-22 08:36:53 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-22 08:39:14 -0400 |
commit | f8ddadc4db6c7b7029b6d0e0d9af24f74ad27ca2 (patch) | |
tree | 0a6432aba336bae42313613f4c891bcfce02bd4e /security/keys/encrypted-keys/encrypted.c | |
parent | bdd091bab8c631bd2801af838e344fad34566410 (diff) | |
parent | b5ac3beb5a9f0ef0ea64cd85faf94c0dc4de0e42 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
There were quite a few overlapping sets of changes here.
Daniel's bug fix for off-by-ones in the new BPF branch instructions,
along with the added allowances for "data_end > ptr + x" forms
collided with the metadata additions.
Along with those three changes came veritifer test cases, which in
their final form I tried to group together properly. If I had just
trimmed GIT's conflict tags as-is, this would have split up the
meta tests unnecessarily.
In the socketmap code, a set of preemption disabling changes
overlapped with the rename of bpf_compute_data_end() to
bpf_compute_data_pointers().
Changes were made to the mv88e6060.c driver set addr method
which got removed in net-next.
The hyperv transport socket layer had a locking change in 'net'
which overlapped with a change of socket state macro usage
in 'net-next'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'security/keys/encrypted-keys/encrypted.c')
-rw-r--r-- | security/keys/encrypted-keys/encrypted.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/security/keys/encrypted-keys/encrypted.c b/security/keys/encrypted-keys/encrypted.c index 69855ba0d3b3..d92cbf9687c3 100644 --- a/security/keys/encrypted-keys/encrypted.c +++ b/security/keys/encrypted-keys/encrypted.c | |||
@@ -309,6 +309,13 @@ static struct key *request_user_key(const char *master_desc, const u8 **master_k | |||
309 | 309 | ||
310 | down_read(&ukey->sem); | 310 | down_read(&ukey->sem); |
311 | upayload = user_key_payload_locked(ukey); | 311 | upayload = user_key_payload_locked(ukey); |
312 | if (!upayload) { | ||
313 | /* key was revoked before we acquired its semaphore */ | ||
314 | up_read(&ukey->sem); | ||
315 | key_put(ukey); | ||
316 | ukey = ERR_PTR(-EKEYREVOKED); | ||
317 | goto error; | ||
318 | } | ||
312 | *master_key = upayload->data; | 319 | *master_key = upayload->data; |
313 | *master_keylen = upayload->datalen; | 320 | *master_keylen = upayload->datalen; |
314 | error: | 321 | error: |
@@ -847,7 +854,7 @@ static int encrypted_update(struct key *key, struct key_preparsed_payload *prep) | |||
847 | size_t datalen = prep->datalen; | 854 | size_t datalen = prep->datalen; |
848 | int ret = 0; | 855 | int ret = 0; |
849 | 856 | ||
850 | if (test_bit(KEY_FLAG_NEGATIVE, &key->flags)) | 857 | if (key_is_negative(key)) |
851 | return -ENOKEY; | 858 | return -ENOKEY; |
852 | if (datalen <= 0 || datalen > 32767 || !prep->data) | 859 | if (datalen <= 0 || datalen > 32767 || !prep->data) |
853 | return -EINVAL; | 860 | return -EINVAL; |