diff options
Diffstat (limited to 'security/keys/user_defined.c')
-rw-r--r-- | security/keys/user_defined.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/security/keys/user_defined.c b/security/keys/user_defined.c index 28cb30f80256..8705d79b2c6f 100644 --- a/security/keys/user_defined.c +++ b/security/keys/user_defined.c | |||
@@ -120,7 +120,10 @@ int user_update(struct key *key, struct key_preparsed_payload *prep) | |||
120 | 120 | ||
121 | if (ret == 0) { | 121 | if (ret == 0) { |
122 | /* attach the new data, displacing the old */ | 122 | /* attach the new data, displacing the old */ |
123 | zap = key->payload.data[0]; | 123 | if (!test_bit(KEY_FLAG_NEGATIVE, &key->flags)) |
124 | zap = key->payload.data[0]; | ||
125 | else | ||
126 | zap = NULL; | ||
124 | rcu_assign_keypointer(key, upayload); | 127 | rcu_assign_keypointer(key, upayload); |
125 | key->expiry = 0; | 128 | key->expiry = 0; |
126 | } | 129 | } |