Commit 423b9788 authored by David Howells's avatar David Howells Committed by James Morris

KEYS: Fix some sparse warnings

Fix some sparse warnings in the keyrings code:

 (1) compat_keyctl_instantiate_key_iov() should be static.

 (2) There were a couple of places where a pointer was being compared against
     integer 0 rather than NULL.

 (3) keyctl_instantiate_key_common() should not take a __user-labelled iovec
     pointer as the caller must have copied the iovec to kernel space.

 (4) __key_link_begin() takes and __key_link_end() releases
     keyring_serialise_link_sem under some circumstances and so this should be
     declared.

     Note that adding __acquires() and __releases() for this doesn't help cure
     the warnings messages - something only commenting out both helps.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarJames Morris <james.l.morris@oracle.com>
parent ff2bb047
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
* *
* If successful, 0 will be returned. * If successful, 0 will be returned.
*/ */
long compat_keyctl_instantiate_key_iov( static long compat_keyctl_instantiate_key_iov(
key_serial_t id, key_serial_t id,
const struct compat_iovec __user *_payload_iov, const struct compat_iovec __user *_payload_iov,
unsigned ioc, unsigned ioc,
...@@ -33,7 +33,7 @@ long compat_keyctl_instantiate_key_iov( ...@@ -33,7 +33,7 @@ long compat_keyctl_instantiate_key_iov(
struct iovec iovstack[UIO_FASTIOV], *iov = iovstack; struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
long ret; long ret;
if (_payload_iov == 0 || ioc == 0) if (!_payload_iov || !ioc)
goto no_payload; goto no_payload;
ret = compat_rw_copy_check_uvector(WRITE, _payload_iov, ioc, ret = compat_rw_copy_check_uvector(WRITE, _payload_iov, ioc,
......
...@@ -240,7 +240,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t, ...@@ -240,7 +240,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t,
extern long keyctl_invalidate_key(key_serial_t); extern long keyctl_invalidate_key(key_serial_t);
extern long keyctl_instantiate_key_common(key_serial_t, extern long keyctl_instantiate_key_common(key_serial_t,
const struct iovec __user *, const struct iovec *,
unsigned, size_t, key_serial_t); unsigned, size_t, key_serial_t);
/* /*
......
...@@ -1106,7 +1106,7 @@ long keyctl_instantiate_key_iov(key_serial_t id, ...@@ -1106,7 +1106,7 @@ long keyctl_instantiate_key_iov(key_serial_t id,
struct iovec iovstack[UIO_FASTIOV], *iov = iovstack; struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
long ret; long ret;
if (_payload_iov == 0 || ioc == 0) if (!_payload_iov || !ioc)
goto no_payload; goto no_payload;
ret = rw_copy_check_uvector(WRITE, _payload_iov, ioc, ret = rw_copy_check_uvector(WRITE, _payload_iov, ioc,
......
...@@ -751,6 +751,7 @@ static void keyring_unlink_rcu_disposal(struct rcu_head *rcu) ...@@ -751,6 +751,7 @@ static void keyring_unlink_rcu_disposal(struct rcu_head *rcu)
int __key_link_begin(struct key *keyring, const struct key_type *type, int __key_link_begin(struct key *keyring, const struct key_type *type,
const char *description, unsigned long *_prealloc) const char *description, unsigned long *_prealloc)
__acquires(&keyring->sem) __acquires(&keyring->sem)
__acquires(&keyring_serialise_link_sem)
{ {
struct keyring_list *klist, *nklist; struct keyring_list *klist, *nklist;
unsigned long prealloc; unsigned long prealloc;
...@@ -960,6 +961,7 @@ void __key_link(struct key *keyring, struct key *key, ...@@ -960,6 +961,7 @@ void __key_link(struct key *keyring, struct key *key,
void __key_link_end(struct key *keyring, struct key_type *type, void __key_link_end(struct key *keyring, struct key_type *type,
unsigned long prealloc) unsigned long prealloc)
__releases(&keyring->sem) __releases(&keyring->sem)
__releases(&keyring_serialise_link_sem)
{ {
BUG_ON(type == NULL); BUG_ON(type == NULL);
BUG_ON(type->name == NULL); BUG_ON(type->name == NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment