diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/bounce.c | 9 | ||||
-rw-r--r-- | mm/memory.c | 15 |
2 files changed, 22 insertions, 2 deletions
diff --git a/mm/bounce.c b/mm/bounce.c index bf0cf7c8387b..e590272fe7a8 100644 --- a/mm/bounce.c +++ b/mm/bounce.c | |||
@@ -198,8 +198,13 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig, | |||
198 | /* | 198 | /* |
199 | * irk, bounce it | 199 | * irk, bounce it |
200 | */ | 200 | */ |
201 | if (!bio) | 201 | if (!bio) { |
202 | bio = bio_alloc(GFP_NOIO, (*bio_orig)->bi_vcnt); | 202 | unsigned int cnt = (*bio_orig)->bi_vcnt; |
203 | |||
204 | bio = bio_alloc(GFP_NOIO, cnt); | ||
205 | memset(bio->bi_io_vec, 0, cnt * sizeof(struct bio_vec)); | ||
206 | } | ||
207 | |||
203 | 208 | ||
204 | to = bio->bi_io_vec + i; | 209 | to = bio->bi_io_vec + i; |
205 | 210 | ||
diff --git a/mm/memory.c b/mm/memory.c index f01b7eed6e16..0a2010a9518c 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -3075,3 +3075,18 @@ void print_vma_addr(char *prefix, unsigned long ip) | |||
3075 | } | 3075 | } |
3076 | up_read(¤t->mm->mmap_sem); | 3076 | up_read(¤t->mm->mmap_sem); |
3077 | } | 3077 | } |
3078 | |||
3079 | #ifdef CONFIG_PROVE_LOCKING | ||
3080 | void might_fault(void) | ||
3081 | { | ||
3082 | might_sleep(); | ||
3083 | /* | ||
3084 | * it would be nicer only to annotate paths which are not under | ||
3085 | * pagefault_disable, however that requires a larger audit and | ||
3086 | * providing helpers like get_user_atomic. | ||
3087 | */ | ||
3088 | if (!in_atomic() && current->mm) | ||
3089 | might_lock_read(¤t->mm->mmap_sem); | ||
3090 | } | ||
3091 | EXPORT_SYMBOL(might_fault); | ||
3092 | #endif | ||