From 599f7d256dd7c187aac97caf161f09522ee13b3d Mon Sep 17 00:00:00 2001 From: David Howells Date: Wed, 21 Apr 2010 17:36:35 +0100 Subject: [PATCH] --- yaml --- r: 190678 b: refs/heads/master c: e35ec2d2c1fc45dd3e46dde74bb0c4c4366125bf h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/security/keys/user_defined.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d8b71e4a8cfa..75cb6368d62e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bfeb0360de7713de8240cafd7ecf6058b6dbea0b +refs/heads/master: e35ec2d2c1fc45dd3e46dde74bb0c4c4366125bf diff --git a/trunk/security/keys/user_defined.c b/trunk/security/keys/user_defined.c index 7c687d568221..e9aa07929656 100644 --- a/trunk/security/keys/user_defined.c +++ b/trunk/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 */