tree f51d2663ffb3155e97b71b38b4e9990fbcf98063
parent 665c7741fb63c7ceeb515f1d1ed8b016efe65bf3
author Matt Helsley <matthltc@us.ibm.com> 1245281278 -0700
committer Linus Torvalds <torvalds@linux-foundation.org> 1245355436 -0700

futex: documentation: fix inconsistent description of futex list_op_pending

Strictly speaking list_op_pending points to the 'lock entry', not the
'lock word' (which is actually at 'offset' from 'lock entry').  We can
infer this based on reading the code in kernel/futex.c:

	    struct robust_list __user *entry, *next_entry, *pending;
		...
            if (fetch_robust_entry(&pending, &head->list_op_pending, &pip))
                    return;
            ...
            if (pending)
                    handle_futex_death((void __user *)pending + futex_offset,
                                       curr, pip);

Which is also consistent with the rest of the docs on robust futex lists.

Signed-off-by: Matt Helsley <matthltc@us.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Thomas Gleixner <tglx@linuxtronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
