summaryrefslogtreecommitdiffstats
path: root/security/keys/permission.c
diff options
context:
space:
mode:
authorIngo Molnar2017-10-24 13:17:20 +0200
committerIngo Molnar2017-10-24 13:17:20 +0200
commit9babb091e0ec84f7503fde0a2d9a2a16a0f48e3c (patch)
tree9b6f07288b9ca9d8444414cd7da291d7c4731da7 /security/keys/permission.c
parentlocking/static_keys: Improve uninitialized key warning (diff)
parentLinux 4.14-rc6 (diff)
downloadkernel-qcow2-linux-9babb091e0ec84f7503fde0a2d9a2a16a0f48e3c.tar.gz
kernel-qcow2-linux-9babb091e0ec84f7503fde0a2d9a2a16a0f48e3c.tar.xz
kernel-qcow2-linux-9babb091e0ec84f7503fde0a2d9a2a16a0f48e3c.zip
Merge tag 'v4.14-rc6' into locking/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'security/keys/permission.c')
-rw-r--r--security/keys/permission.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/security/keys/permission.c b/security/keys/permission.c
index 732cc0beffdf..a72b4dd70c8a 100644
--- a/security/keys/permission.c
+++ b/security/keys/permission.c
@@ -88,7 +88,8 @@ EXPORT_SYMBOL(key_task_permission);
*/
int key_validate(const struct key *key)
{
- unsigned long flags = key->flags;
+ unsigned long flags = READ_ONCE(key->flags);
+ time_t expiry = READ_ONCE(key->expiry);
if (flags & (1 << KEY_FLAG_INVALIDATED))
return -ENOKEY;
@@ -99,9 +100,9 @@ int key_validate(const struct key *key)
return -EKEYREVOKED;
/* check it hasn't expired */
- if (key->expiry) {
+ if (expiry) {
struct timespec now = current_kernel_time();
- if (now.tv_sec >= key->expiry)
+ if (now.tv_sec >= expiry)
return -EKEYEXPIRED;
}