Re: [PATCH 3/3] mm: catch memory commitment underflow

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/18/2015 01:36 PM, Konstantin Khlebnikov wrote:
> On Sun, Jan 18, 2015 at 2:34 PM, Sasha Levin <sasha.levin@xxxxxxxxxx> wrote:
>> On 06/24/2014 04:16 PM, Konstantin Khlebnikov wrote:
>>> This patch prints warning (if CONFIG_DEBUG_VM=y) when
>>> memory commitment becomes too negative.
>>>
>>> Signed-off-by: Konstantin Khlebnikov <koct9i@xxxxxxxxx>
>>
>> Hi Konstantin,
>>
>> I seem to be hitting this warning when fuzzing on the latest -next kernel:
> 
> That might be unexpected change of shmem file which holds anon-vma data,
> thanks to checkpoint-restore they are expoted via /proc/.../map_files
> 
> I've fixed truncate (https://lkml.org/lkml/2014/6/24/729) but there
> are some other ways
> to change i_size: write, fallocate and maybe something else.

deja vu!

With the latest -next:

[  884.898243] ------------[ cut here ]------------
[  884.899983] ------------[ cut here ]------------
[  884.900013] WARNING: CPU: 5 PID: 17543 at mm/mmap.c:159 __vm_enough_memory+0x3b7/0x440()
[  884.900017] ------------[ cut here ]------------
[  884.900155] memory commitment underflow
[  884.900158] Modules linked in:
[  884.900167] CPU: 5 PID: 17543 Comm: trinity-c102 Not tainted 4.0.0-next-20150424-sasha-00038-ga61bf14 #2171
[  884.900180] WARNING: CPU: 0 PID: 18483 at mm/mmap.c:159 __vm_enough_memory+0x3b7/0x440()
[  884.900185]  ffff88017e180000
[  884.900188] memory commitment underflow
[  884.900190]  0000000012331894
[  884.900193] Modules linked in:
[  884.900195]  ffff8807dd8bf5a8
[  884.900196]
[  884.900200]  ffffffffa9abbf32
[  884.900211]  0000000000000000 ffff8807dd8bf628 ffff8807dd8bf5f8 ffffffff9f1f1c2a
[  884.900222]  ffff8807dd8bf5d8 ffffffff9f5efb27 ffff8807dd8bf628 ffffed00fbb17ec1
[  884.900230] Call Trace:
[  884.900247] dump_stack (lib/dump_stack.c:52)
[  884.900260] warn_slowpath_common (kernel/panic.c:447)
[  884.900270] ? __vm_enough_memory (mm/mmap.c:157 (discriminator 3))
[  884.900278] warn_slowpath_fmt (kernel/panic.c:453)
[  884.900286] ? warn_slowpath_common (kernel/panic.c:453)
[  884.900300] ? find_get_entry (include/linux/rcupdate.h:969 mm/filemap.c:1003)
[  884.900310] __vm_enough_memory (mm/mmap.c:157 (discriminator 3))
[  884.900317] ? find_get_entry (mm/filemap.c:967)
[  884.900334] cap_vm_enough_memory (security/commoncap.c:954)
[  884.900344] security_vm_enough_memory_mm (security/security.c:235)
[  884.900355] shmem_getpage_gfp (mm/shmem.c:1156)
[  884.900369] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[  884.900382] ? lockdep_init (include/linux/list.h:28 kernel/locking/lockdep.c:4065)
[  884.900391] ? shmem_add_to_page_cache (mm/shmem.c:1034)
[  884.900402] ? __wake_up_locked_key (kernel/sched/wait.c:456)
[  884.900414] ? __bdi_update_bandwidth (mm/page-writeback.c:1579)
[  884.900422] ? __lock_is_held (kernel/locking/lockdep.c:3572)
[  884.900432] ? iov_iter_single_seg_count (lib/iov_iter.c:310)
[  884.900441] shmem_write_begin (mm/shmem.c:1492)
[  884.900450] generic_perform_write (mm/filemap.c:2467)
[  884.900461] ? generic_write_checks (mm/filemap.c:2427)
[  884.900475] ? file_update_time (fs/inode.c:1746)
[  884.900483] ? file_remove_suid (fs/inode.c:1718)
[  884.900492] ? generic_file_write_iter (include/linux/sched.h:3091 include/linux/sched.h:3102 mm/filemap.c:2269 mm/filemap.c:2622)
[  884.900501] ? mutex_trylock (kernel/locking/mutex.c:615)
[  884.900510] __generic_file_write_iter (mm/filemap.c:2597)
[  884.900521] ? get_parent_ip (kernel/sched/core.c:2556)
[  884.900531] generic_file_write_iter (mm/filemap.c:2625)
[  884.900543] do_iter_readv_writev (fs/read_write.c:665)
[  884.900551] ? do_readv_writev (include/linux/fs.h:2417 fs/read_write.c:804)
[  884.900558] ? do_loop_readv_writev (fs/read_write.c:657)
[  884.900567] ? rw_verify_area (fs/read_write.c:406 (discriminator 4))
[  884.900576] do_readv_writev (fs/read_write.c:808)
[  884.900583] ? __generic_file_write_iter (mm/filemap.c:2616)
[  884.900591] ? vfs_write (fs/read_write.c:777)
[  884.900601] ? debug_smp_processor_id (lib/smp_processor_id.c:57)
[  884.900609] ? get_lock_stats (kernel/locking/lockdep.c:249)
[  884.900621] ? vtime_account_user (kernel/sched/cputime.c:701)
[  884.900630] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[  884.900639] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
[  884.900646] ? trace_hardirqs_on (kernel/locking/lockdep.c:2644)
[  884.900654] vfs_writev (fs/read_write.c:848)
[  884.900663] SyS_writev (fs/read_write.c:881 fs/read_write.c:872)
[  884.900671] ? SyS_readv (fs/read_write.c:872)
[  884.900684] ? syscall_trace_enter_phase2 (arch/x86/kernel/ptrace.c:1592)
[  884.900693] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[  884.900703] tracesys_phase2 (arch/x86/kernel/entry_64.S:337)
[  884.900716] ? __percpu_counter_sum (lib/percpu_counter.c:107)
[  884.900723] ---[ end trace 957b1b1a507acb40 ]---
[  884.900730] CPU: 0 PID: 18483 Comm: trinity-c39 Not tainted 4.0.0-next-20150424-sasha-00038-ga61bf14 #2171
[  884.900746]  ffff880077ba3000 000000005dbf6d8b ffff88007bd8f5b8 ffffffffa9abbf32
[  884.900759]  0000000000000000 ffff88007bd8f638 ffff88007bd8f608 ffffffff9f1f1c2a
[  884.900771]  ffff88007bd8f618 ffffffff9f5efb27 ffffffff9f2700d0 ffffed000f7b1ec3
[  884.900774] Call Trace:
[  884.900787] dump_stack (lib/dump_stack.c:52)
[  884.900796] warn_slowpath_common (kernel/panic.c:447)
[  884.900807] ? __vm_enough_memory (mm/mmap.c:157 (discriminator 3))
[  884.900820] ? finish_task_switch (kernel/sched/sched.h:1077 kernel/sched/core.c:2245)
[  884.900830] warn_slowpath_fmt (kernel/panic.c:453)
[  884.900838] ? warn_slowpath_common (kernel/panic.c:453)
[  884.900846] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[  884.900863] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
[  884.900873] __vm_enough_memory (mm/mmap.c:157 (discriminator 3))
[  884.900883] ? find_get_entry (mm/filemap.c:967)
[  884.900895] cap_vm_enough_memory (security/commoncap.c:954)
[  884.900905] security_vm_enough_memory_mm (security/security.c:235)
[  884.900912] ? security_vm_enough_memory_mm (security/security.c:234)
[  884.900922] shmem_getpage_gfp (mm/shmem.c:1156)
[  884.900931] ? lockdep_init (include/linux/list.h:28 kernel/locking/lockdep.c:4065)
[  884.900940] ? shmem_add_to_page_cache (mm/shmem.c:1034)
[  884.900950] ? __wake_up_locked_key (kernel/sched/wait.c:456)
[  884.900960] ? __bdi_update_bandwidth (mm/page-writeback.c:1579)
[  884.900968] ? __lock_is_held (kernel/locking/lockdep.c:3572)
[  884.900977] ? iov_iter_single_seg_count (lib/iov_iter.c:310)
[  884.900986] shmem_write_begin (mm/shmem.c:1492)
[  884.900996] generic_perform_write (mm/filemap.c:2467)
[  884.901011] ? generic_write_checks (mm/filemap.c:2427)
[  884.901173] ? file_update_time (fs/inode.c:1746)
[  884.901182] ? file_remove_suid (fs/inode.c:1718)
[  884.901190] ? generic_file_write_iter (include/linux/sched.h:3091 include/linux/sched.h:3102 mm/filemap.c:2269 mm/filemap.c:2622)
[  884.901199] ? mutex_trylock (kernel/locking/mutex.c:615)
[  884.901207] __generic_file_write_iter (mm/filemap.c:2597)
[  884.901217] ? get_parent_ip (kernel/sched/core.c:2556)
[  884.901228] generic_file_write_iter (mm/filemap.c:2625)
[  884.901240] do_iter_readv_writev (fs/read_write.c:665)
[  884.901248] ? do_readv_writev (include/linux/fs.h:2417 fs/read_write.c:804)
[  884.901257] ? do_loop_readv_writev (fs/read_write.c:657)
[  884.901269] ? rw_verify_area (fs/read_write.c:406 (discriminator 4))
[  884.901278] do_readv_writev (fs/read_write.c:808)
[  884.901288] ? __generic_file_write_iter (mm/filemap.c:2616)
[  884.901297] ? vfs_write (fs/read_write.c:777)
[  884.901306] ? debug_smp_processor_id (lib/smp_processor_id.c:57)
[  884.901314] ? get_lock_stats (kernel/locking/lockdep.c:249)
[  884.901326] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[  884.901336] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
[  884.901345] ? trace_hardirqs_on (kernel/locking/lockdep.c:2644)
[  884.901355] vfs_writev (fs/read_write.c:848)
[  884.901365] ? __fdget_pos (fs/file.c:717)
[  884.901374] SyS_pwritev (include/linux/file.h:38 fs/read_write.c:937 fs/read_write.c:922)
[  884.901382] ? SyS_preadv (fs/read_write.c:922)
[  884.901393] ? syscall_trace_enter_phase2 (arch/x86/kernel/ptrace.c:1592)
[  884.901404] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[  884.901414] tracesys_phase2 (arch/x86/kernel/entry_64.S:337)
[  884.901423] ---[ end trace 957b1b1a507acb41 ]---
[  885.133658] WARNING: CPU: 6 PID: 17218 at mm/mmap.c:159 __vm_enough_memory+0x3b7/0x440()
[  885.136475] memory commitment underflow
[  885.137807] Modules linked in:
[  885.139002] CPU: 6 PID: 17218 Comm: trinity-c296 Tainted: G        W       4.0.0-next-20150424-sasha-00038-ga61bf14 #2171
[  885.142889]  ffff88078e4a8000 0000000057b5e6a5 ffff88078e6275a8 ffffffffa9abbf32
[  885.145640]  0000000000000000 ffff88078e627628 ffff88078e6275f8 ffffffff9f1f1c2a
[  885.148334]  ffff88078e6275d8 ffffffff9f5efb27 ffff88078e627628 ffffed00f1cc4ec1
[  885.150427] Call Trace:
[  885.151080] dump_stack (lib/dump_stack.c:52)
[  885.152771] warn_slowpath_common (kernel/panic.c:447)
[  885.154819] ? __vm_enough_memory (mm/mmap.c:157 (discriminator 3))
[  885.156674] warn_slowpath_fmt (kernel/panic.c:453)
[  885.158168] ? warn_slowpath_common (kernel/panic.c:453)
[  885.159853] ? find_get_entry (include/linux/rcupdate.h:969 mm/filemap.c:1003)
[  885.161311] __vm_enough_memory (mm/mmap.c:157 (discriminator 3))
[  885.162823] ? find_get_entry (mm/filemap.c:967)
[  885.164599] cap_vm_enough_memory (security/commoncap.c:954)
[  885.166588] security_vm_enough_memory_mm (security/security.c:235)
[  885.168923] shmem_getpage_gfp (mm/shmem.c:1156)
[  885.170990] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[  885.173230] ? lockdep_init (include/linux/list.h:28 kernel/locking/lockdep.c:4065)
[  885.175228] ? shmem_add_to_page_cache (mm/shmem.c:1034)
[  885.177492] ? __wake_up_locked_key (kernel/sched/wait.c:456)
[  885.179648] ? __bdi_update_bandwidth (mm/page-writeback.c:1579)
[  885.181288] ? __lock_is_held (kernel/locking/lockdep.c:3572)
[  885.182750] ? __wake_up_bit (kernel/sched/wait.c:456)
[  885.184418] ? iov_iter_single_seg_count (lib/iov_iter.c:310)
[  885.186728] shmem_write_begin (mm/shmem.c:1492)
[  885.188751] generic_perform_write (mm/filemap.c:2467)
[  885.190906] ? generic_write_checks (mm/filemap.c:2427)
[  885.193252] ? file_update_time (fs/inode.c:1746)
[  885.195344] ? file_remove_suid (fs/inode.c:1718)
[  885.196996] ? generic_file_write_iter (include/linux/sched.h:3091 include/linux/sched.h:3102 mm/filemap.c:2269 mm/filemap.c:2622)
[  885.198672] ? mutex_trylock (kernel/locking/mutex.c:615)
[  885.200440] __generic_file_write_iter (mm/filemap.c:2597)
[  885.202666] ? get_parent_ip (kernel/sched/core.c:2556)
[  885.204647] generic_file_write_iter (mm/filemap.c:2625)
[  885.206875] do_iter_readv_writev (fs/read_write.c:665)
[  885.209242] ? do_readv_writev (include/linux/fs.h:2417 fs/read_write.c:804)
[  885.211306] ? do_loop_readv_writev (fs/read_write.c:657)
[  885.213414] ? rw_verify_area (fs/read_write.c:406 (discriminator 4))
[  885.215263] do_readv_writev (fs/read_write.c:808)
[  885.216855] ? __generic_file_write_iter (mm/filemap.c:2616)
[  885.218482] ? vfs_write (fs/read_write.c:777)
[  885.219931] ? debug_smp_processor_id (lib/smp_processor_id.c:57)
[  885.222062] ? get_lock_stats (kernel/locking/lockdep.c:249)
[  885.224275] ? vtime_account_user (kernel/sched/cputime.c:701)
[  885.226375] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[  885.228472] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
[  885.230673] ? trace_hardirqs_on (kernel/locking/lockdep.c:2644)
[  885.232751] vfs_writev (fs/read_write.c:848)
[  885.234490] SyS_writev (fs/read_write.c:881 fs/read_write.c:872)
[  885.236473] ? SyS_readv (fs/read_write.c:872)
[  885.238300] ? syscall_trace_enter_phase2 (arch/x86/kernel/ptrace.c:1592)
[  885.240677] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[  885.242909] tracesys_phase2 (arch/x86/kernel/entry_64.S:337)
[  885.246363] ---[ end trace 957b1b1a507acb42 ]---


Thanks,
Sasha

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]