diff options
-rw-r--r-- | kernel/up.c | 1 | ||||
-rw-r--r-- | mm/memory.c | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/kernel/up.c b/kernel/up.c index c04b9dcfceb..1ff27a28bb7 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 e009ce87085..c2d4c477e5b 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 |