summaryrefslogtreecommitdiff
path: root/security/keys/keyctl.c
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2010-06-11 17:30:05 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2010-06-27 07:02:34 -0700
commit4303ef19c6e6d16ea845c04b02b9cf086bcb8ed7 (patch)
tree83e649d3b9d3583c7576920a0feb08e38a19d1b5 /security/keys/keyctl.c
parent7e27d6e778cd87b6f2415515d7127eba53fe5d02 (diff)
downloadlinux-3.10-4303ef19c6e6d16ea845c04b02b9cf086bcb8ed7.tar.gz
linux-3.10-4303ef19c6e6d16ea845c04b02b9cf086bcb8ed7.tar.bz2
linux-3.10-4303ef19c6e6d16ea845c04b02b9cf086bcb8ed7.zip
KEYS: Propagate error code instead of returning -EINVAL
This is from a Smatch check I'm writing. strncpy_from_user() returns -EFAULT on error so the first change just silences a warning but doesn't change how the code works. The other change is a bug fix because install_thread_keyring_to_cred() can return a variety of errors such as -EINVAL, -EEXIST, -ENOMEM or -EKEYREVOKED. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'security/keys/keyctl.c')
-rw-r--r--security/keys/keyctl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index 13074b45474..6261745e445 100644
--- a/security/keys/keyctl.c
+++ b/security/keys/keyctl.c
@@ -33,7 +33,7 @@ static int key_get_type_from_user(char *type,
ret = strncpy_from_user(type, _type, len);
if (ret < 0)
- return -EFAULT;
+ return ret;
if (ret == 0 || ret >= len)
return -EINVAL;
@@ -1080,7 +1080,7 @@ set:
return old_setting;
error:
abort_creds(new);
- return -EINVAL;
+ return ret;
} /* end keyctl_set_reqkey_keyring() */