linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Yu Zhao <yuzhao@google.com>
To: Linux-MM <linux-mm@kvack.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Matthew Wilcox <willy@infradead.org>
Subject: vmap_area_lock lockdep warning
Date: Sat, 3 Sep 2022 13:40:59 -0600	[thread overview]
Message-ID: <CAOUHufaPshtKrTWOz7T7QFYUNVGFm0JBjvM700Nhf9qEL9b3EQ@mail.gmail.com> (raw)

TLDR: find_vmap_area can be called in irq context, e.g., soft lockup timer.

Somehow I only started hitting this recently. Hopefully somebody will
have a better idea than I do. Thanks.

From mm-unstable-2022-09-02-23-35:
================================
  WARNING: inconsistent lock state
  6.0.0-dbg-DEV #1 Tainted: G S         O
  --------------------------------
  inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
  stress-ng/49028 [HC1[1]:SC0[0]:HE0:SE1] takes:
  ffffffff9ec42d48 (vmap_area_lock){?.+.}-{2:2}, at: find_vmap_area+0x1b/0x70
  {HARDIRQ-ON-W} state was registered at:
    lock_acquire+0xb2/0x190
    _raw_spin_lock+0x2f/0x40
    alloc_vmap_area+0x6e2/0x7a0
    __get_vm_area_node+0xe9/0x160
    get_vm_area_caller+0x43/0x60
    __ioremap_caller+0x205/0x300
    ioremap_cache+0x17/0x20
    acpi_os_map_iomem+0x12e/0x1d0
    acpi_os_map_memory+0xe/0x10
    acpi_tb_acquire_table+0x42/0x6e
    acpi_tb_validate_temp_table+0x43/0x55
    acpi_tb_verify_temp_table+0x31/0x240
    acpi_reallocate_root_table+0xe4/0x156
    acpi_early_init+0x4d/0xcd
    start_kernel+0x320/0x43f
    x86_64_start_reservations+0x24/0x26
    x86_64_start_kernel+0x124/0x12b
    secondary_startup_64_no_verify+0xe6/0xeb
  irq event stamp: 1872092
  hardirqs last  enabled at (1872091): [<ffffffff9d90f8af>]
irqentry_exit+0x5f/0x80
  hardirqs last disabled at (1872092): [<ffffffff9d90e71f>]
sysvec_apic_timer_interrupt+0xf/0x90
  softirqs last  enabled at (1870920): [<ffffffff9cd9c741>]
__irq_exit_rcu+0x91/0xf0
  softirqs last disabled at (1870897): [<ffffffff9cd9c741>]
__irq_exit_rcu+0x91/0xf0

  other info that might help us debug this:
   Possible unsafe locking scenario:

         CPU0
         ----
    lock(vmap_area_lock);
    <Interrupt>
      lock(vmap_area_lock);

   *** DEADLOCK ***

  1 lock held by stress-ng/49028:
   #0: ffff924f9cd5fa58 (&mm->mmap_lock#2){++++}-{3:3}, at:
do_mas_align_munmap+0x407/0x650

  stack backtrace:
  CPU: 95 PID: 49028 Comm: stress-ng Tainted: G S         O
6.0.0-dbg-DEV #1
  Call Trace:
   <IRQ>
   dump_stack_lvl+0x69/0xaa
   dump_stack+0x10/0x12
   print_usage_bug+0x336/0x340
   mark_lock_irq+0x494/0x4a0
   mark_lock+0x125/0x190
   __lock_acquire+0x595/0x30d0
   lock_acquire+0xb2/0x190
   _raw_spin_lock+0x2f/0x40
   find_vmap_area+0x1b/0x70
   check_heap_object+0x23/0x2a0
   __check_object_size+0x69/0x140
   copy_from_user_nmi+0x53/0x80
   show_opcodes+0xa6/0x120
   show_iret_regs+0x36/0x60
   __show_regs+0x27/0x2f0
   show_regs_if_on_stack+0xde/0xf0
   show_trace_log_lvl+0x276/0x400
   show_regs+0x5d/0x60
   watchdog_timer_fn+0x182/0x220
   __hrtimer_run_queues+0x13b/0x220
   hrtimer_interrupt+0xf1/0x380
   __sysvec_apic_timer_interrupt+0x52/0xc0
   sysvec_apic_timer_interrupt+0x71/0x90
   </IRQ>
   <TASK>
   asm_sysvec_apic_timer_interrupt+0x1b/0x20
  RIP: 0010:_raw_spin_unlock_irqrestore+0x3d/0x50
  Code: 83 c7 18 48 8b 75 08 e8 71 6a 4f ff 48 89 df e8 39 c6 4f ff 41
f7 c6 00 02 00 00 74 06 e8 9b b9 5c ff fb 65 ff 0d 9b 60 70 62 <5b> 41
5e 5d c3 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44
  RSP: 0018:ffffac87f76dbb28 EFLAGS: 00000246
  RAX: a33534c87c735300 RBX: ffff9247c6b42050 RCX: 0000000000000001
  RDX: 0000000000000007 RSI: ffff924e84aba198 RDI: ffffffff9d919ea5
  RBP: ffffac87f76dbb38 R08: 0000000000000001 R09: 0000000000000001
  R10: ffffffff9d08a070 R11: 0000000000000000 R12: 00000000000001ed
  R13: ffff9247c6b42000 R14: 0000000000000286 R15: ffffe7151ae30240
   release_pages+0x1af/0xaa0
   free_pages_and_swap_cache+0x41/0x50
   tlb_flush_mmu+0x136/0x180
   tlb_finish_mmu+0x44/0x80
   unmap_region+0x170/0x1a0
   do_mas_align_munmap+0x445/0x650
   do_mas_munmap+0xf3/0x110
   __vm_munmap+0xd3/0x180
   __x64_sys_munmap+0x1b/0x20


             reply	other threads:[~2022-09-03 19:41 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-03 19:40 Yu Zhao [this message]
2022-09-03 19:48 ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAOUHufaPshtKrTWOz7T7QFYUNVGFm0JBjvM700Nhf9qEL9b3EQ@mail.gmail.com \
    --to=yuzhao@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox