CRED: Fix __task_cred()'s lockdep check and banner comment
authorDavid Howells <dhowells@redhat.com>
Thu, 29 Jul 2010 11:45:55 +0000 (12:45 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Jul 2010 22:16:18 +0000 (15:16 -0700)
commit8f92054e7ca1d3a3ae50fb42d2253ac8730d9b2a
tree29d1bcf78bf04fe41c7e811f806f58d655c41f9f
parentde09a9771a5346029f4d11e4ac886be7f9bfdd75
CRED: Fix __task_cred()'s lockdep check and banner comment

Fix __task_cred()'s lockdep check by removing the following validation
condition:

lockdep_tasklist_lock_is_held()

as commit_creds() does not take the tasklist_lock, and nor do most of the
functions that call it, so this check is pointless and it can prevent
detection of the RCU lock not being held if the tasklist_lock is held.

Instead, add the following validation condition:

task->exit_state >= 0

to permit the access if the target task is dead and therefore unable to change
its own credentials.

Fix __task_cred()'s comment to:

 (1) discard the bit that says that the caller must prevent the target task
     from being deleted.  That shouldn't need saying.

 (2) Add a comment indicating the result of __task_cred() should not be passed
     directly to get_cred(), but rather than get_task_cred() should be used
     instead.

Also put a note into the documentation to enforce this point there too.

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/credentials.txt
include/linux/cred.h
include/linux/sched.h