diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index 7576f49eeb34..69b173f78a25 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c @@ -731,6 +731,11 @@ long keyctl_read_key(key_serial_t keyid, char __user *buffer, size_t buflen) key = key_ref_to_ptr(key_ref); + if (test_bit(KEY_FLAG_NEGATIVE, &key->flags)) { + ret = -ENOKEY; + goto error2; + } + /* see if we can read it directly */ ret = key_permission(key_ref, KEY_READ); if (ret == 0)