On Fri, Jul 22, 2016 at 02:19:40PM +0200, Jan Kara wrote: > Currently PTE gets updated in wp_pfn_shared() after dax_pfn_mkwrite() > has released corresponding radix tree entry lock. When we want to > writeprotect PTE on cache flush, we need PTE modification to happen > under radix tree entry lock to ensure consisten updates of PTE and radix > tree (standard faults use page lock to ensure this consistency). So move > update of PTE bit into dax_pfn_mkwrite(). > > Signed-off-by: Jan Kara <jack@xxxxxxx> After applying the whole series to a v4.7 baseline I was hitting a deadlock in my testing, and it bisected to this commit. This deadlock happens in my QEMU guest with generic/068, ext4 and DAX. It reproduces 100% of the time after this commit. Here is the lockdep info, passed through kasan_symbolize.py: run fstests generic/068 at 2016-07-25 15:29:10 EXT4-fs (pmem0p2): DAX enabled. Warning: EXPERIMENTAL, use at your own risk EXT4-fs (pmem0p2): mounted filesystem with ordered data mode. Opts: dax ====================================================== [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ] 4.7.0+ #1 Not tainted ------------------------------------------------------ fstest/1856 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire: (&(ptlock_ptr(page))->rlock#2){+.+...}, at: [< inline >] spin_lock include/linux/spinlock.h:302 (&(ptlock_ptr(page))->rlock#2){+.+...}, at: [<ffffffff8121c0b7>] finish_mkwrite_fault+0xa7/0x120 mm/memory.c:2286 and this task is already holding: (&(&mapping->tree_lock)->rlock){-.-...}, at: [< inline >] spin_lock_irq include/linux/spinlock.h:332 (&(&mapping->tree_lock)->rlock){-.-...}, at: [<ffffffff812d5086>] dax_pfn_mkwrite+0x36/0x90 fs/dax.c:1280 which would create a new lock dependency: (&(&mapping->tree_lock)->rlock){-.-...} -> (&(ptlock_ptr(page))->rlock#2){+.+...} but this new dependency connects a HARDIRQ-irq-safe lock: (&(&mapping->tree_lock)->rlock){-.-...} ... which became HARDIRQ-irq-safe at: [< inline >] mark_irqflags kernel/locking/lockdep.c:2912 [<ffffffff8110a236>] __lock_acquire+0x706/0x14b0 kernel/locking/lockdep.c:3287 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:112 [<ffffffff81ad02ff>] _raw_spin_lock_irqsave+0x4f/0x90 kernel/locking/spinlock.c:159 [<ffffffff811f2a27>] test_clear_page_writeback+0x67/0x2a0 mm/page-writeback.c:2737 [<ffffffff811de81f>] end_page_writeback+0x1f/0xa0 mm/filemap.c:858 [<ffffffff812b9495>] end_buffer_async_write+0xc5/0x180 fs/buffer.c:375 [<ffffffff812b8338>] end_bio_bh_io_sync+0x28/0x40 fs/buffer.c:2936 [<ffffffff81575907>] bio_endio+0x57/0x60 block/bio.c:1758 [<ffffffff818915fc>] dec_pending+0x21c/0x340 drivers/md/dm.c:1015 [<ffffffff818922a6>] clone_endio+0x76/0xe0 drivers/md/dm.c:1059 [<ffffffff81575907>] bio_endio+0x57/0x60 block/bio.c:1758 [< inline >] req_bio_endio block/blk-core.c:155 [<ffffffff8157f072>] blk_update_request+0xa2/0x3c0 block/blk-core.c:2644 [<ffffffff8158998a>] blk_mq_end_request+0x1a/0x70 block/blk-mq.c:320 [<ffffffff8177bcdf>] virtblk_request_done+0x3f/0x70 drivers/block/virtio_blk.c:131 [<ffffffff81588983>] __blk_mq_complete_request_remote+0x13/0x20 block/blk-mq.c:330 [<ffffffff8114bebf>] flush_smp_call_function_queue+0x5f/0x150 kernel/smp.c:249 [<ffffffff8114c903>] generic_smp_call_function_single_interrupt+0x13/0x60 kernel/smp.c:194 [< inline >] __smp_call_function_single_interrupt arch/x86/kernel/smp.c:311 [<ffffffff810575a7>] smp_call_function_single_interrupt+0x27/0x40 arch/x86/kernel/smp.c:318 [<ffffffff81ad1926>] call_function_single_interrupt+0x96/0xa0 arch/x86/entry/entry_64.S:639 [< inline >] raw_spin_unlock_irq_rcu_node kernel/rcu/tree.h:718 [< inline >] rcu_gp_init kernel/rcu/tree.c:1934 [<ffffffff8112a5f7>] rcu_gp_kthread+0x157/0x8f0 kernel/rcu/tree.c:2175 [<ffffffff810d59e6>] kthread+0xf6/0x110 kernel/kthread.c:209 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 to a HARDIRQ-irq-unsafe lock: (&(ptlock_ptr(page))->rlock#2){+.+...} ... which became HARDIRQ-irq-unsafe at: ... [< inline >] mark_irqflags kernel/locking/lockdep.c:2929 ... [<ffffffff8110a0f1>] __lock_acquire+0x5c1/0x14b0 kernel/locking/lockdep.c:3287 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [< inline >] do_anonymous_page mm/memory.c:2823 [< inline >] handle_pte_fault mm/memory.c:3378 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121ea5c>] handle_mm_fault+0x196c/0x1d60 mm/memory.c:3534 [< inline >] faultin_page mm/gup.c:378 [<ffffffff8121829a>] __get_user_pages+0x18a/0x760 mm/gup.c:577 [< inline >] __get_user_pages_locked mm/gup.c:754 [<ffffffff81218c84>] get_user_pages_remote+0x54/0x60 mm/gup.c:962 [< inline >] get_arg_page fs/exec.c:206 [<ffffffff81280bcf>] copy_strings.isra.21+0x15f/0x3e0 fs/exec.c:521 [<ffffffff81280e84>] copy_strings_kernel+0x34/0x40 fs/exec.c:566 [<ffffffff812815fa>] do_execveat_common.isra.36+0x57a/0x970 fs/exec.c:1690 [<ffffffff81281a1c>] do_execve+0x2c/0x30 fs/exec.c:1747 [<ffffffff810c9f80>] call_usermodehelper_exec_async+0xf0/0x140 kernel/kmod.c:252 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 other info that might help us debug this: Possible interrupt unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&(ptlock_ptr(page))->rlock#2); local_irq_disable(); lock(&(&mapping->tree_lock)->rlock); lock(&(ptlock_ptr(page))->rlock#2); <Interrupt> lock(&(&mapping->tree_lock)->rlock); *** DEADLOCK *** 4 locks held by fstest/1856: #0: (&mm->mmap_sem){++++++}, at: [<ffffffff81070ad2>] __do_page_fault+0x152/0x4c0 arch/x86/mm/fault.c:1295 #1: (sb_pagefaults){++++..}, at: [<ffffffff8127c854>] __sb_start_write+0xb4/0xf0 fs/super.c:1197 #2: (&ei->i_mmap_sem){++++.+}, at: [<ffffffff8131cd04>] ext4_dax_pfn_mkwrite+0x54/0xa0 fs/ext4/file.c:273 #3: (&(&mapping->tree_lock)->rlock){-.-...}, at: [< inline >] spin_lock_irq include/linux/spinlock.h:332 #3: (&(&mapping->tree_lock)->rlock){-.-...}, at: [<ffffffff812d5086>] dax_pfn_mkwrite+0x36/0x90 fs/dax.c:1280 the dependencies between HARDIRQ-irq-safe lock and the holding lock: -> (&(&mapping->tree_lock)->rlock){-.-...} ops: 605595 { IN-HARDIRQ-W at: [< inline >] mark_irqflags kernel/locking/lockdep.c:2912 [<ffffffff8110a236>] __lock_acquire+0x706/0x14b0 kernel/locking/lockdep.c:3287 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:112 [<ffffffff81ad02ff>] _raw_spin_lock_irqsave+0x4f/0x90 kernel/locking/spinlock.c:159 [<ffffffff811f2a27>] test_clear_page_writeback+0x67/0x2a0 mm/page-writeback.c:2737 [<ffffffff811de81f>] end_page_writeback+0x1f/0xa0 mm/filemap.c:858 [<ffffffff812b9495>] end_buffer_async_write+0xc5/0x180 fs/buffer.c:375 [<ffffffff812b8338>] end_bio_bh_io_sync+0x28/0x40 fs/buffer.c:2936 [<ffffffff81575907>] bio_endio+0x57/0x60 block/bio.c:1758 [<ffffffff818915fc>] dec_pending+0x21c/0x340 drivers/md/dm.c:1015 [<ffffffff818922a6>] clone_endio+0x76/0xe0 drivers/md/dm.c:1059 [<ffffffff81575907>] bio_endio+0x57/0x60 block/bio.c:1758 [< inline >] req_bio_endio block/blk-core.c:155 [<ffffffff8157f072>] blk_update_request+0xa2/0x3c0 block/blk-core.c:2644 [<ffffffff8158998a>] blk_mq_end_request+0x1a/0x70 block/blk-mq.c:320 [<ffffffff8177bcdf>] virtblk_request_done+0x3f/0x70 drivers/block/virtio_blk.c:131 [<ffffffff81588983>] __blk_mq_complete_request_remote+0x13/0x20 block/blk-mq.c:330 [<ffffffff8114bebf>] flush_smp_call_function_queue+0x5f/0x150 kernel/smp.c:249 [<ffffffff8114c903>] generic_smp_call_function_single_interrupt+0x13/0x60 kernel/smp.c:194 [< inline >] __smp_call_function_single_interrupt arch/x86/kernel/smp.c:311 [<ffffffff810575a7>] smp_call_function_single_interrupt+0x27/0x40 arch/x86/kernel/smp.c:318 [<ffffffff81ad1926>] call_function_single_interrupt+0x96/0xa0 arch/x86/entry/entry_64.S:639 [< inline >] raw_spin_unlock_irq_rcu_node kernel/rcu/tree.h:718 [< inline >] rcu_gp_init kernel/rcu/tree.c:1934 [<ffffffff8112a5f7>] rcu_gp_kthread+0x157/0x8f0 kernel/rcu/tree.c:2175 [<ffffffff810d59e6>] kthread+0xf6/0x110 kernel/kthread.c:209 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 IN-SOFTIRQ-W at: [< inline >] mark_irqflags kernel/locking/lockdep.c:2915 [<ffffffff8110a0cf>] __lock_acquire+0x59f/0x14b0 kernel/locking/lockdep.c:3287 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:112 [<ffffffff81ad02ff>] _raw_spin_lock_irqsave+0x4f/0x90 kernel/locking/spinlock.c:159 [<ffffffff811f2a27>] test_clear_page_writeback+0x67/0x2a0 mm/page-writeback.c:2737 [<ffffffff811de81f>] end_page_writeback+0x1f/0xa0 mm/filemap.c:858 [<ffffffff8132cc89>] ext4_finish_bio+0x159/0x1e0 fs/ext4/page-io.c:119 [<ffffffff8132d09f>] ext4_end_bio+0x4f/0x100 fs/ext4/page-io.c:333 [<ffffffff81575907>] bio_endio+0x57/0x60 block/bio.c:1758 [<ffffffff818915fc>] dec_pending+0x21c/0x340 drivers/md/dm.c:1015 [<ffffffff818922a6>] clone_endio+0x76/0xe0 drivers/md/dm.c:1059 [<ffffffff81575907>] bio_endio+0x57/0x60 block/bio.c:1758 [< inline >] req_bio_endio block/blk-core.c:155 [<ffffffff8157f072>] blk_update_request+0xa2/0x3c0 block/blk-core.c:2644 [<ffffffff8158998a>] blk_mq_end_request+0x1a/0x70 block/blk-mq.c:320 [<ffffffff8177bcdf>] virtblk_request_done+0x3f/0x70 drivers/block/virtio_blk.c:131 [< inline >] blk_mq_ipi_complete_request block/blk-mq.c:354 [<ffffffff81589b48>] __blk_mq_complete_request+0x78/0xf0 block/blk-mq.c:366 [<ffffffff81589bdc>] blk_mq_complete_request+0x1c/0x20 block/blk-mq.c:385 [<ffffffff8177b543>] virtblk_done+0x73/0x100 drivers/block/virtio_blk.c:147 [<ffffffff816800ac>] vring_interrupt+0x3c/0x90 drivers/virtio/virtio_ring.c:892 [<ffffffff8111fa81>] handle_irq_event_percpu+0x41/0x330 kernel/irq/handle.c:145 [<ffffffff8111fda9>] handle_irq_event+0x39/0x60 kernel/irq/handle.c:192 [<ffffffff811232c4>] handle_edge_irq+0x74/0x130 kernel/irq/chip.c:623 [< inline >] generic_handle_irq_desc include/linux/irqdesc.h:147 [<ffffffff81036103>] handle_irq+0x73/0x120 arch/x86/kernel/irq_64.c:78 [<ffffffff81ad2f81>] do_IRQ+0x61/0x120 arch/x86/kernel/irq.c:240 [<ffffffff81ad0e16>] ret_from_intr+0x0/0x20 arch/x86/entry/entry_64.S:482 [< inline >] invoke_softirq kernel/softirq.c:350 [<ffffffff810b6dff>] irq_exit+0x10f/0x120 kernel/softirq.c:391 [< inline >] exiting_irq ./arch/x86/include/asm/apic.h:658 [<ffffffff81ad3082>] smp_apic_timer_interrupt+0x42/0x50 arch/x86/kernel/apic/apic.c:932 [<ffffffff81ad11a6>] apic_timer_interrupt+0x96/0xa0 arch/x86/entry/entry_64.S:618 [< inline >] rcu_lock_acquire include/linux/rcupdate.h:486 [< inline >] rcu_read_lock_sched include/linux/rcupdate.h:971 [< inline >] percpu_ref_get_many include/linux/percpu-refcount.h:174 [< inline >] percpu_ref_get include/linux/percpu-refcount.h:194 [< inline >] blk_queue_enter_live block/blk.h:85 [<ffffffff8158b06a>] blk_mq_map_request+0x5a/0x440 block/blk-mq.c:1175 [<ffffffff8158c275>] blk_sq_make_request+0xa5/0x500 block/blk-mq.c:1364 [<ffffffff8157e816>] generic_make_request+0xf6/0x2a0 block/blk-core.c:2076 [<ffffffff8157ea36>] submit_bio+0x76/0x170 block/blk-core.c:2139 [<ffffffff8132d25f>] ext4_io_submit+0x2f/0x40 fs/ext4/page-io.c:345 [< inline >] io_submit_add_bh fs/ext4/page-io.c:385 [<ffffffff8132d428>] ext4_bio_write_page+0x198/0x3c0 fs/ext4/page-io.c:495 [<ffffffff8132205d>] mpage_submit_page+0x5d/0x80 fs/ext4/inode.c:2091 [<ffffffff8132217b>] mpage_process_page_bufs+0xfb/0x110 fs/ext4/inode.c:2196 [<ffffffff81323662>] mpage_prepare_extent_to_map+0x202/0x300 fs/ext4/inode.c:2575 [<ffffffff81327988>] ext4_writepages+0x618/0x1020 fs/ext4/inode.c:2736 [<ffffffff811f2661>] do_writepages+0x21/0x30 mm/page-writeback.c:2364 [<ffffffff811e12a6>] __filemap_fdatawrite_range+0xc6/0x100 mm/filemap.c:300 [<ffffffff811e1424>] filemap_write_and_wait_range+0x44/0x90 mm/filemap.c:490 [<ffffffff8131dc1e>] ext4_sync_file+0x9e/0x4a0 fs/ext4/fsync.c:115 [<ffffffff812b545b>] vfs_fsync_range+0x4b/0xb0 fs/sync.c:195 [< inline >] vfs_fsync fs/sync.c:209 [<ffffffff812b551d>] do_fsync+0x3d/0x70 fs/sync.c:219 [< inline >] SYSC_fsync fs/sync.c:227 [<ffffffff812b57d0>] SyS_fsync+0x10/0x20 fs/sync.c:225 [<ffffffff81003fa7>] do_syscall_64+0x67/0x190 arch/x86/entry/common.c:350 [<ffffffff81ad053f>] return_from_SYSCALL_64+0x0/0x7a arch/x86/entry/entry_64.S:248 INITIAL USE at: [<ffffffff81109daf>] __lock_acquire+0x27f/0x14b0 kernel/locking/lockdep.c:3291 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock_irq include/linux/spinlock_api_smp.h:130 [<ffffffff81acfa03>] _raw_spin_lock_irq+0x43/0x80 kernel/locking/spinlock.c:167 [< inline >] spin_lock_irq include/linux/spinlock.h:332 [<ffffffff811dfb9e>] __add_to_page_cache_locked+0x13e/0x500 mm/filemap.c:653 [<ffffffff811dffce>] add_to_page_cache_lru+0x4e/0xe0 mm/filemap.c:702 [<ffffffff811e012e>] pagecache_get_page+0xce/0x300 mm/filemap.c:1208 [<ffffffff811e0389>] grab_cache_page_write_begin+0x29/0x40 mm/filemap.c:2581 [<ffffffff812a7ee8>] simple_write_begin+0x28/0x1b0 fs/libfs.c:428 [<ffffffff811dd80f>] pagecache_write_begin+0x1f/0x30 mm/filemap.c:2484 [<ffffffff81284220>] __page_symlink+0xc0/0x100 fs/namei.c:4720 [<ffffffff81284282>] page_symlink+0x22/0x30 fs/namei.c:4743 [<ffffffff8138e71a>] ramfs_symlink+0x4a/0xc0 fs/ramfs/inode.c:129 [<ffffffff812859bc>] vfs_symlink+0xac/0x110 fs/namei.c:4071 [< inline >] SYSC_symlinkat fs/namei.c:4098 [< inline >] SyS_symlinkat fs/namei.c:4078 [< inline >] SYSC_symlink fs/namei.c:4111 [<ffffffff8128bbc0>] SyS_symlink+0x80/0xf0 fs/namei.c:4109 [<ffffffff825b4e53>] do_symlink+0x4d/0x90 init/initramfs.c:393 [<ffffffff825b4c5f>] write_buffer+0x23/0x34 init/initramfs.c:417 [<ffffffff825b4c9b>] flush_buffer+0x2b/0x85 init/initramfs.c:429 [<ffffffff825ff590>] __gunzip+0x27e/0x322 lib/decompress_inflate.c:147 [<ffffffff825ff645>] gunzip+0x11/0x13 lib/decompress_inflate.c:193 [<ffffffff825b560b>] unpack_to_rootfs+0x17e/0x294 init/initramfs.c:485 [<ffffffff825b58f7>] populate_rootfs+0x5c/0xfc init/initramfs.c:617 [<ffffffff81002190>] do_one_initcall+0x50/0x190 init/main.c:772 [< inline >] do_initcall_level init/main.c:837 [< inline >] do_initcalls init/main.c:845 [< inline >] do_basic_setup init/main.c:863 [<ffffffff825b320f>] kernel_init_freeable+0x1f6/0x290 init/main.c:1010 [<ffffffff81ac0f1e>] kernel_init+0xe/0x100 init/main.c:936 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 } ... key at: [<ffffffff8355c9a0>] __key.44708+0x0/0x8 ??:? ... acquired at: [<ffffffff81108bcb>] check_irq_usage+0x4b/0xb0 kernel/locking/lockdep.c:1620 [< inline >] check_prev_add_irq kernel/locking/lockdep_states.h:7 [< inline >] check_prev_add kernel/locking/lockdep.c:1828 [< inline >] check_prevs_add kernel/locking/lockdep.c:1934 [< inline >] validate_chain kernel/locking/lockdep.c:2261 [<ffffffff8110a972>] __lock_acquire+0xe42/0x14b0 kernel/locking/lockdep.c:3330 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [<ffffffff8121c0b7>] finish_mkwrite_fault+0xa7/0x120 mm/memory.c:2286 [<ffffffff812d50b5>] dax_pfn_mkwrite+0x65/0x90 fs/dax.c:1290 [<ffffffff8131cd4b>] ext4_dax_pfn_mkwrite+0x9b/0xa0 fs/ext4/file.c:278 [< inline >] wp_pfn_shared mm/memory.c:2317 [<ffffffff8121c643>] do_wp_page+0x513/0x760 mm/memory.c:2403 [< inline >] handle_pte_fault mm/memory.c:3397 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121e102>] handle_mm_fault+0x1012/0x1d60 mm/memory.c:3534 [<ffffffff81070b5e>] __do_page_fault+0x1de/0x4c0 arch/x86/mm/fault.c:1356 [<ffffffff81070f1c>] trace_do_page_fault+0x5c/0x280 arch/x86/mm/fault.c:1449 [<ffffffff8106af7a>] do_async_page_fault+0x1a/0xa0 arch/x86/kernel/kvm.c:265 [<ffffffff81ad2708>] async_page_fault+0x28/0x30 arch/x86/entry/entry_64.S:923 the dependencies between the lock to be acquired and HARDIRQ-irq-unsafe lock: -> (&(ptlock_ptr(page))->rlock#2){+.+...} ops: 921722 { HARDIRQ-ON-W at: [< inline >] mark_irqflags kernel/locking/lockdep.c:2929 [<ffffffff8110a0f1>] __lock_acquire+0x5c1/0x14b0 kernel/locking/lockdep.c:3287 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [< inline >] do_anonymous_page mm/memory.c:2823 [< inline >] handle_pte_fault mm/memory.c:3378 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121ea5c>] handle_mm_fault+0x196c/0x1d60 mm/memory.c:3534 [< inline >] faultin_page mm/gup.c:378 [<ffffffff8121829a>] __get_user_pages+0x18a/0x760 mm/gup.c:577 [< inline >] __get_user_pages_locked mm/gup.c:754 [<ffffffff81218c84>] get_user_pages_remote+0x54/0x60 mm/gup.c:962 [< inline >] get_arg_page fs/exec.c:206 [<ffffffff81280bcf>] copy_strings.isra.21+0x15f/0x3e0 fs/exec.c:521 [<ffffffff81280e84>] copy_strings_kernel+0x34/0x40 fs/exec.c:566 [<ffffffff812815fa>] do_execveat_common.isra.36+0x57a/0x970 fs/exec.c:1690 [<ffffffff81281a1c>] do_execve+0x2c/0x30 fs/exec.c:1747 [<ffffffff810c9f80>] call_usermodehelper_exec_async+0xf0/0x140 kernel/kmod.c:252 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 SOFTIRQ-ON-W at: [< inline >] mark_irqflags kernel/locking/lockdep.c:2933 [<ffffffff8110a11f>] __lock_acquire+0x5ef/0x14b0 kernel/locking/lockdep.c:3287 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [< inline >] do_anonymous_page mm/memory.c:2823 [< inline >] handle_pte_fault mm/memory.c:3378 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121ea5c>] handle_mm_fault+0x196c/0x1d60 mm/memory.c:3534 [< inline >] faultin_page mm/gup.c:378 [<ffffffff8121829a>] __get_user_pages+0x18a/0x760 mm/gup.c:577 [< inline >] __get_user_pages_locked mm/gup.c:754 [<ffffffff81218c84>] get_user_pages_remote+0x54/0x60 mm/gup.c:962 [< inline >] get_arg_page fs/exec.c:206 [<ffffffff81280bcf>] copy_strings.isra.21+0x15f/0x3e0 fs/exec.c:521 [<ffffffff81280e84>] copy_strings_kernel+0x34/0x40 fs/exec.c:566 [<ffffffff812815fa>] do_execveat_common.isra.36+0x57a/0x970 fs/exec.c:1690 [<ffffffff81281a1c>] do_execve+0x2c/0x30 fs/exec.c:1747 [<ffffffff810c9f80>] call_usermodehelper_exec_async+0xf0/0x140 kernel/kmod.c:252 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 INITIAL USE at: [<ffffffff81109daf>] __lock_acquire+0x27f/0x14b0 kernel/locking/lockdep.c:3291 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [< inline >] do_anonymous_page mm/memory.c:2823 [< inline >] handle_pte_fault mm/memory.c:3378 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121ea5c>] handle_mm_fault+0x196c/0x1d60 mm/memory.c:3534 [< inline >] faultin_page mm/gup.c:378 [<ffffffff8121829a>] __get_user_pages+0x18a/0x760 mm/gup.c:577 [< inline >] __get_user_pages_locked mm/gup.c:754 [<ffffffff81218c84>] get_user_pages_remote+0x54/0x60 mm/gup.c:962 [< inline >] get_arg_page fs/exec.c:206 [<ffffffff81280bcf>] copy_strings.isra.21+0x15f/0x3e0 fs/exec.c:521 [<ffffffff81280e84>] copy_strings_kernel+0x34/0x40 fs/exec.c:566 [<ffffffff812815fa>] do_execveat_common.isra.36+0x57a/0x970 fs/exec.c:1690 [<ffffffff81281a1c>] do_execve+0x2c/0x30 fs/exec.c:1747 [<ffffffff810c9f80>] call_usermodehelper_exec_async+0xf0/0x140 kernel/kmod.c:252 [<ffffffff81ad06af>] ret_from_fork+0x1f/0x40 arch/x86/entry/entry_64.S:389 } ... key at: [<ffffffff8279cc18>] __key.17932+0x0/0x8 ??:? ... acquired at: [<ffffffff81108bcb>] check_irq_usage+0x4b/0xb0 kernel/locking/lockdep.c:1620 [< inline >] check_prev_add_irq kernel/locking/lockdep_states.h:7 [< inline >] check_prev_add kernel/locking/lockdep.c:1828 [< inline >] check_prevs_add kernel/locking/lockdep.c:1934 [< inline >] validate_chain kernel/locking/lockdep.c:2261 [<ffffffff8110a972>] __lock_acquire+0xe42/0x14b0 kernel/locking/lockdep.c:3330 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [<ffffffff8121c0b7>] finish_mkwrite_fault+0xa7/0x120 mm/memory.c:2286 [<ffffffff812d50b5>] dax_pfn_mkwrite+0x65/0x90 fs/dax.c:1290 [<ffffffff8131cd4b>] ext4_dax_pfn_mkwrite+0x9b/0xa0 fs/ext4/file.c:278 [< inline >] wp_pfn_shared mm/memory.c:2317 [<ffffffff8121c643>] do_wp_page+0x513/0x760 mm/memory.c:2403 [< inline >] handle_pte_fault mm/memory.c:3397 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121e102>] handle_mm_fault+0x1012/0x1d60 mm/memory.c:3534 [<ffffffff81070b5e>] __do_page_fault+0x1de/0x4c0 arch/x86/mm/fault.c:1356 [<ffffffff81070f1c>] trace_do_page_fault+0x5c/0x280 arch/x86/mm/fault.c:1449 [<ffffffff8106af7a>] do_async_page_fault+0x1a/0xa0 arch/x86/kernel/kvm.c:265 [<ffffffff81ad2708>] async_page_fault+0x28/0x30 arch/x86/entry/entry_64.S:923 stack backtrace: CPU: 0 PID: 1856 Comm: fstest Not tainted 4.7.0+ #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.1-0-gb3ef39f-prebuilt.qemu-project.org 04/01/2014 0000000000000086 0000000070a78a50 ffff8800a768f9a8 ffffffff815b20a3 ffffffff82ec47f0 0000000000000030 ffff8800a768fac0 ffffffff81108b29 0000000000000000 0000000000000000 0000000000000001 000000000d3ea148 Call Trace: [< inline >] __dump_stack lib/dump_stack.c:15 [<ffffffff815b20a3>] dump_stack+0x85/0xc2 lib/dump_stack.c:51 [< inline >] print_bad_irq_dependency kernel/locking/lockdep.c:1532 [<ffffffff81108b29>] check_usage+0x539/0x590 kernel/locking/lockdep.c:1564 [<ffffffff81108bcb>] check_irq_usage+0x4b/0xb0 kernel/locking/lockdep.c:1620 [< inline >] check_prev_add_irq kernel/locking/lockdep_states.h:7 [< inline >] check_prev_add kernel/locking/lockdep.c:1828 [< inline >] check_prevs_add kernel/locking/lockdep.c:1934 [< inline >] validate_chain kernel/locking/lockdep.c:2261 [<ffffffff8110a972>] __lock_acquire+0xe42/0x14b0 kernel/locking/lockdep.c:3330 [<ffffffff8110b490>] lock_acquire+0xf0/0x1d0 kernel/locking/lockdep.c:3741 [< inline >] __raw_spin_lock include/linux/spinlock_api_smp.h:144 [<ffffffff81acf796>] _raw_spin_lock+0x36/0x70 kernel/locking/spinlock.c:151 [< inline >] spin_lock include/linux/spinlock.h:302 [<ffffffff8121c0b7>] finish_mkwrite_fault+0xa7/0x120 mm/memory.c:2286 [<ffffffff812d50b5>] dax_pfn_mkwrite+0x65/0x90 fs/dax.c:1290 [<ffffffff8131cd4b>] ext4_dax_pfn_mkwrite+0x9b/0xa0 fs/ext4/file.c:278 [< inline >] wp_pfn_shared mm/memory.c:2317 [<ffffffff8121c643>] do_wp_page+0x513/0x760 mm/memory.c:2403 [< inline >] handle_pte_fault mm/memory.c:3397 [< inline >] __handle_mm_fault mm/memory.c:3505 [<ffffffff8121e102>] handle_mm_fault+0x1012/0x1d60 mm/memory.c:3534 [<ffffffff81070b5e>] __do_page_fault+0x1de/0x4c0 arch/x86/mm/fault.c:1356 [<ffffffff81070f1c>] trace_do_page_fault+0x5c/0x280 arch/x86/mm/fault.c:1449 [<ffffffff8106af7a>] do_async_page_fault+0x1a/0xa0 arch/x86/kernel/kvm.c:265 [<ffffffff81ad2708>] async_page_fault+0x28/0x30 arch/x86/entry/entry_64.S:923 -- 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>