X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=security%2Fkeys%2Fuser_defined.c;h=e9aa079296561507835e0e349a55f07b11bec5bb;hb=7d32c0aca4fbd0319c860d12af5fae3e88c760e6;hp=5bbfdebb7acfb79436d615851ec91d57c2d74c49;hpb=cdf4f383a4b0ffbf458f65380ecffbeee1f79841;p=firefly-linux-kernel-4.4.55.git diff --git a/security/keys/user_defined.c b/security/keys/user_defined.c index 5bbfdebb7acf..e9aa07929656 100644 --- a/security/keys/user_defined.c +++ b/security/keys/user_defined.c @@ -11,7 +11,6 @@ #include #include -#include #include #include #include @@ -200,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 */