aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/events/uprobes.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 4e0db3496d70..897417dbca8e 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -761,6 +761,16 @@ build_map_info(struct address_space *mapping, loff_t offset, bool is_register)
761 if (!valid_vma(vma, is_register)) 761 if (!valid_vma(vma, is_register))
762 continue; 762 continue;
763 763
764 if (!prev && !more) {
765 /*
766 * Needs GFP_NOWAIT to avoid i_mmap_mutex recursion through
767 * reclaim. This is optimistic, no harm done if it fails.
768 */
769 prev = kmalloc(sizeof(struct map_info),
770 GFP_NOWAIT | __GFP_NOMEMALLOC | __GFP_NOWARN);
771 if (prev)
772 prev->next = NULL;
773 }
764 if (!prev) { 774 if (!prev) {
765 more++; 775 more++;
766 continue; 776 continue;