diff options
Diffstat (limited to 'security/keys/user_defined.c')
| -rw-r--r-- | security/keys/user_defined.c | 3 | 
1 files changed, 2 insertions, 1 deletions
diff --git a/security/keys/user_defined.c b/security/keys/user_defined.c index 7c687d56822..e9aa0792965 100644 --- a/security/keys/user_defined.c +++ b/security/keys/user_defined.c @@ -199,7 +199,8 @@ long user_read(const struct key *key, char __user *buffer, size_t buflen)  	struct user_key_payload *upayload;  	long ret; -	upayload = rcu_dereference(key->payload.data); +	upayload = rcu_dereference_protected( +		key->payload.data, rwsem_is_locked(&((struct key *)key)->sem));  	ret = upayload->datalen;  	/* we can return the data as is */  |