summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-01-13 20:02:21 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-13 20:02:21 +0300
commit28839855bf623f2d7eee72377d4896770a45494f (patch)
treee7f8b0742120b9d7401f5783a6065f004167aae1
parentccbf04f24c55ead791dac5df8ddeb1a640fbaad8 (diff)
parent6e96281412f2f757abe623e08a9577e2bbd3402f (diff)
downloadlinux-28839855bf623f2d7eee72377d4896770a45494f.tar.xz
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: smp_call_function_single(): be slightly less stupid, fix #2 lockdep, mm: fix might_fault() annotation
-rw-r--r--kernel/up.c1
-rw-r--r--mm/memory.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/kernel/up.c b/kernel/up.c
index c04b9dcfcebe..1ff27a28bb7d 100644
--- a/kernel/up.c
+++ b/kernel/up.c
@@ -2,6 +2,7 @@
* Uniprocessor-only support functions. The counterpart to kernel/smp.c
*/
+#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/smp.h>
diff --git a/mm/memory.c b/mm/memory.c
index e009ce870859..c2d4c477e5bb 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3165,6 +3165,15 @@ void print_vma_addr(char *prefix, unsigned long ip)
#ifdef CONFIG_PROVE_LOCKING
void might_fault(void)
{
+ /*
+ * Some code (nfs/sunrpc) uses socket ops on kernel memory while
+ * holding the mmap_sem, this is safe because kernel memory doesn't
+ * get paged out, therefore we'll never actually fault, and the
+ * below annotations will generate false positives.
+ */
+ if (segment_eq(get_fs(), KERNEL_DS))
+ return;
+
might_sleep();
/*
* it would be nicer only to annotate paths which are not under