]> err.no Git - linux-2.6/commit
[PATCH] check_user_page_readable() deadlock fix
authorAndrew Morton <akpm@osdl.org>
Wed, 27 Jul 2005 18:43:54 +0000 (11:43 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 27 Jul 2005 23:25:53 +0000 (16:25 -0700)
commit1aaf18ff9de1f37bf674236fc0779c3aaa65b998
tree53df4d3dd0fbd81b79d5cdb63cf0d11853307a6b
parent0cfc11ed45e4c00750039e5a18c0fc0d681e19db
[PATCH] check_user_page_readable() deadlock fix

Fix bug identifued by Richard Purdie <rpurdie@rpsys.net>.

oprofile calls check_user_page_readable() from interrupt context, so we
deadlock over various VFS locks.

But check_user_page_readable() doesn't imply either a read or a write of the
page's contents.  Change __follow_page() so that check_user_page_readable()
can tell __follow_page() that we're not accessing the page's contents, and use
that info to avoid the troublesome lock-takings.

Also, make follow_page() inline for the single callsite in memory.c to save a
bit of stack space.

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
mm/memory.c