mm/util.c: add warning if __vm_enough_memory fails
authorKefeng Wang <wangkefeng.wang@huawei.com>
Tue, 26 Jul 2022 14:54:28 +0000 (22:54 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 Sep 2022 03:25:54 +0000 (20:25 -0700)
If a process has not enough memory to allocate a new virtual mapping, we
may meet verious kinds of error, eg, fork cannot allocate memory, SIGBUS
error in shmem, but it is difficult to confirm them, let's add some debug
information to easily to check this scenario if __vm_enough_memory fails.

Link: https://lkml.kernel.org/r/20220726145428.8030-1-wangkefeng.wang@huawei.com
Reported-by: Yongqiang Liu <liuyongqiang13@huawei.com>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Acked-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/util.c

index f0cf92b..8d944ce 100644 (file)
--- a/mm/util.c
+++ b/mm/util.c
@@ -1052,6 +1052,8 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
        if (percpu_counter_read_positive(&vm_committed_as) < allowed)
                return 0;
 error:
+       pr_warn_ratelimited("%s: pid: %d, comm: %s, no enough memory for the allocation\n",
+                           __func__, current->pid, current->comm);
        vm_unacct_memory(pages);
 
        return -ENOMEM;