usb 5-1: unknown answer from device
input input99: Pen battery low
========================================================
WARNING: possible irq lock inversion dependency detected
syzkaller #0 Tainted: G             L     
--------------------------------------------------------
syz-executor/27790 just changed the state of lock:
ffff88810c148230 (&dev->event_lock#2){..-.}-{3:3}, at: input_event+0x71/0xc0
but this lock took another, SOFTIRQ-READ-unsafe lock in the past:
 (tasklist_lock){.+.+}-{3:3}


and interrupts could create inverse lock ordering between them.


other info that might help us debug this:
Chain exists of:
  &dev->event_lock#2 --> &client->buffer_lock --> tasklist_lock

 Possible interrupt unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(tasklist_lock);
                               local_irq_disable();
                               lock(&dev->event_lock#2);
                               lock(&client->buffer_lock);
  <Interrupt>
    lock(&dev->event_lock#2);

 *** DEADLOCK ***

no locks held by syz-executor/27790.

the shortest dependencies between 2nd lock and 1st lock:
    -> (tasklist_lock){.+.+}-{3:3} {
       HARDIRQ-ON-R at:
                            lock_acquire+0x106/0x350
                            _raw_read_lock+0x36/0x50
                            __do_wait+0xde/0x740
                            do_wait+0x1e7/0x510
                            kernel_wait+0xd6/0x1c0
                            call_usermodehelper_exec_work+0xbe/0x230
                            process_scheduled_works+0xb5d/0x1860
                            worker_thread+0xa53/0xfc0
                            kthread+0x388/0x470
                            ret_from_fork+0x514/0xb70
                            ret_from_fork_asm+0x1a/0x30
       SOFTIRQ-ON-R at:
                            lock_acquire+0x106/0x350
                            _raw_read_lock+0x36/0x50
                            __do_wait+0xde/0x740
                            do_wait+0x1e7/0x510
                            kernel_wait+0xd6/0x1c0
                            call_usermodehelper_exec_work+0xbe/0x230
                            process_scheduled_works+0xb5d/0x1860
                            worker_thread+0xa53/0xfc0
                            kthread+0x388/0x470
                            ret_from_fork+0x514/0xb70
                            ret_from_fork_asm+0x1a/0x30
       INITIAL USE at:
                           lock_acquire+0x106/0x350
                           _raw_write_lock_irq+0x3d/0x50
                           copy_process+0x2b5e/0x4450
                           kernel_clone+0x284/0x8f0
                           user_mode_thread+0x110/0x180
                           rest_init+0x23/0x300
                           start_kernel+0x38a/0x3e0
                           x86_64_start_reservations+0x24/0x30
                           x86_64_start_kernel+0x143/0x1c0
                           common_startup_64+0x13e/0x147
       INITIAL READ USE at:
                                lock_acquire+0x106/0x350
                                _raw_read_lock+0x36/0x50
                                __do_wait+0xde/0x740
                                do_wait+0x1e7/0x510
                                kernel_wait+0xd6/0x1c0
                                call_usermodehelper_exec_work+0xbe/0x230
                                process_scheduled_works+0xb5d/0x1860
                                worker_thread+0xa53/0xfc0
                                kthread+0x388/0x470
                                ret_from_fork+0x514/0xb70
                                ret_from_fork_asm+0x1a/0x30
     }
     ... key      at: [<ffffffff8e60a058>] tasklist_lock+0x18/0x40
     ... acquired at:
   _raw_read_lock+0x36/0x50
   send_sigio+0x101/0x370
   dnotify_handle_event+0x169/0x440
   fsnotify+0x1831/0x1ae0
   path_openat+0x15c2/0x3860
   do_file_open+0x23e/0x4a0
   do_sys_openat2+0x113/0x200
   __x64_sys_openat+0x138/0x170
   do_syscall_64+0x15f/0xf80
   entry_SYSCALL_64_after_hwframe+0x77/0x7f

   -> (&f_owner->lock){....}-{3:3} {
      INITIAL USE at:
                         lock_acquire+0x106/0x350
                         _raw_write_lock_irq+0x3d/0x50
                         __f_setown+0x67/0x370
                         generic_setlease+0xacf/0xfd0
                         do_fcntl_add_lease+0x35e/0x470
                         fcntl_setdeleg+0x14c/0x1e0
                         do_fcntl+0xe6d/0x1a20
                         __se_sys_fcntl+0xc8/0x150
                         do_syscall_64+0x15f/0xf80
                         entry_SYSCALL_64_after_hwframe+0x77/0x7f
      INITIAL READ USE at:
                              lock_acquire+0x106/0x350
                              _raw_read_lock_irqsave+0x48/0x60
                              send_sigio+0x38/0x370
                              kill_fasync+0x24d/0x4d0
                              lease_break_callback+0x26/0x30
                              __break_lease+0x81f/0x1ea0
                              vfs_mknod+0x52d/0x610
                              filename_mknodat+0x3cb/0x660
                              __se_sys_mknodat+0x3b/0x150
                              do_syscall_64+0x15f/0xf80
                              entry_SYSCALL_64_after_hwframe+0x77/0x7f
    }
    ... key      at: [<ffffffff9a531840>] file_f_owner_allocate.__key+0x0/0x20
    ... acquired at:
   _raw_read_lock_irqsave+0x48/0x60
   send_sigio+0x38/0x370
   kill_fasync+0x24d/0x4d0
   lease_break_callback+0x26/0x30
   __break_lease+0x81f/0x1ea0
   vfs_mknod+0x52d/0x610
   filename_mknodat+0x3cb/0x660
   __se_sys_mknodat+0x3b/0x150
   do_syscall_64+0x15f/0xf80
   entry_SYSCALL_64_after_hwframe+0x77/0x7f

  -> (&new->fa_lock){....}-{3:3} {
     INITIAL USE at:
                       lock_acquire+0x106/0x350
                       _raw_write_lock_irq+0x3d/0x50
                       fasync_remove_entry+0xf1/0x1c0
                       sock_fasync+0x85/0xf0
                       __fput+0x890/0xa60
                       task_work_run+0x1d9/0x270
                       exit_to_user_mode_loop+0xed/0x480
                       do_syscall_64+0x33e/0xf80
                       entry_SYSCALL_64_after_hwframe+0x77/0x7f
     INITIAL READ USE at:
                            lock_acquire+0x106/0x350
                            _raw_read_lock_irqsave+0x48/0x60
                            kill_fasync+0x199/0x4d0
                            lease_break_callback+0x26/0x30
                            __break_lease+0x81f/0x1ea0
                            vfs_mknod+0x52d/0x610
                            filename_mknodat+0x3cb/0x660
                            __se_sys_mknodat+0x3b/0x150
                            do_syscall_64+0x15f/0xf80
                            entry_SYSCALL_64_after_hwframe+0x77/0x7f
   }
   ... key      at: [<ffffffff9a531860>] fasync_insert_entry.__key+0x0/0x20
   ... acquired at:
   _raw_read_lock_irqsave+0x48/0x60
   kill_fasync+0x199/0x4d0
   evdev_pass_values+0x627/0xbd0
   evdev_events+0x1e6/0x340
   input_pass_values+0x288/0x890
   input_event_dispose+0x330/0x6b0
   input_inject_event+0x1dc/0x330
   evdev_write+0x325/0x4c0
   vfs_write+0x29a/0xb90
   ksys_write+0x150/0x270
   do_syscall_64+0x15f/0xf80
   entry_SYSCALL_64_after_hwframe+0x77/0x7f

 -> (&client->buffer_lock){....}-{3:3} {
    INITIAL USE at:
                     lock_acquire+0x106/0x350
                     _raw_spin_lock+0x2e/0x40
                     evdev_handle_get_val+0x70/0x9f0
                     evdev_ioctl_handler+0x127b/0x1fe0
                     __se_sys_ioctl+0xfc/0x170
                     do_syscall_64+0x15f/0xf80
                     entry_SYSCALL_64_after_hwframe+0x77/0x7f
  }
  ... key      at: [<ffffffff9a8528c0>] evdev_open.__key.27+0x0/0x20
  ... acquired at:
   _raw_spin_lock+0x2e/0x40
   evdev_handle_get_val+0x70/0x9f0
   evdev_ioctl_handler+0x127b/0x1fe0
   __se_sys_ioctl+0xfc/0x170
   do_syscall_64+0x15f/0xf80
   entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> (&dev->event_lock#2){..-.}-{3:3} {
   IN-SOFTIRQ-W at:
                    lock_acquire+0x106/0x350
                    _raw_spin_lock_irqsave+0x40/0x60
                    input_event+0x71/0xc0
                    pegasus_irq+0x26f/0x5a0
                    __usb_hcd_giveback_urb+0x376/0x540
                    dummy_timer+0xbc0/0x4650
                    __hrtimer_run_queues+0x3c0/0xa20
                    hrtimer_run_softirq+0x17a/0x240
                    handle_softirqs+0x22a/0x840
                    __irq_exit_rcu+0xca/0x220
                    irq_exit_rcu+0x9/0x30
                    sysvec_apic_timer_interrupt+0xa6/0xc0
                    asm_sysvec_apic_timer_interrupt+0x1a/0x20
                    _raw_spin_unlock_irqrestore+0x47/0x80
                    debug_check_no_obj_freed+0x52e/0x550
                    free_unref_folios+0x560/0x1480
                    folios_put_refs+0x9ff/0xb40
                    shmem_undo_range+0x52c/0x1660
                    shmem_evict_inode+0x289/0xae0
                    evict+0x61e/0xb10
                    __dentry_kill+0x1a2/0x5e0
                    finish_dput+0xc9/0x480
                    __fput+0x691/0xa60
                    task_work_run+0x1d9/0x270
                    exit_to_user_mode_loop+0xed/0x480
                    do_syscall_64+0x33e/0xf80
                    entry_SYSCALL_64_after_hwframe+0x77/0x7f
   INITIAL USE at:
                   lock_acquire+0x106/0x350
                   _raw_spin_lock_irqsave+0x40/0x60
                   input_inject_event+0xa4/0x330
                   kbd_led_trigger_activate+0xbc/0x100
                   led_trigger_set+0x535/0x960
                   led_trigger_set_default+0x260/0x2a0
                   led_classdev_register_ext+0x787/0x9c0
                   input_leds_connect+0x517/0x790
                   input_register_device+0xce0/0x1140
                   atkbd_connect+0x71e/0xa10
                   serio_driver_probe+0x82/0xb0
                   really_probe+0x267/0xaf0
                   __driver_probe_device+0x1ef/0x380
                   driver_probe_device+0x4f/0x240
                   __driver_attach+0x34c/0x640
                   bus_for_each_dev+0x23b/0x2c0
                   serio_handle_event+0x1af/0xf80
                   process_scheduled_works+0xb5d/0x1860
                   worker_thread+0xa53/0xfc0
                   kthread+0x388/0x470
                   ret_from_fork+0x514/0xb70
                   ret_from_fork_asm+0x1a/0x30
 }
 ... key      at: [<ffffffff9a852620>] input_allocate_device.__key.7+0x0/0x20
 ... acquired at:
   mark_lock+0x115/0x190
   __lock_acquire+0x689/0x2cf0
   lock_acquire+0x106/0x350
   _raw_spin_lock_irqsave+0x40/0x60
   input_event+0x71/0xc0
   pegasus_irq+0x26f/0x5a0
   __usb_hcd_giveback_urb+0x376/0x540
   dummy_timer+0xbc0/0x4650
   __hrtimer_run_queues+0x3c0/0xa20
   hrtimer_run_softirq+0x17a/0x240
   handle_softirqs+0x22a/0x840
   __irq_exit_rcu+0xca/0x220
   irq_exit_rcu+0x9/0x30
   sysvec_apic_timer_interrupt+0xa6/0xc0
   asm_sysvec_apic_timer_interrupt+0x1a/0x20
   _raw_spin_unlock_irqrestore+0x47/0x80
   debug_check_no_obj_freed+0x52e/0x550
   free_unref_folios+0x560/0x1480
   folios_put_refs+0x9ff/0xb40
   shmem_undo_range+0x52c/0x1660
   shmem_evict_inode+0x289/0xae0
   evict+0x61e/0xb10
   __dentry_kill+0x1a2/0x5e0
   finish_dput+0xc9/0x480
   __fput+0x691/0xa60
   task_work_run+0x1d9/0x270
   exit_to_user_mode_loop+0xed/0x480
   do_syscall_64+0x33e/0xf80
   entry_SYSCALL_64_after_hwframe+0x77/0x7f


stack backtrace:
CPU: 0 UID: 0 PID: 27790 Comm: syz-executor Tainted: G             L      syzkaller #0 PREEMPT(full) 
Tainted: [L]=SOFTLOCKUP
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Call Trace:
 <IRQ>
 dump_stack_lvl+0xe8/0x150
 print_irq_inversion_bug+0x1d2/0x1e0
 mark_lock_irq+0x3d2/0x420
 mark_lock+0x115/0x190
 __lock_acquire+0x689/0x2cf0
 lock_acquire+0x106/0x350
 _raw_spin_lock_irqsave+0x40/0x60
 input_event+0x71/0xc0
 pegasus_irq+0x26f/0x5a0
 __usb_hcd_giveback_urb+0x376/0x540
 dummy_timer+0xbc0/0x4650
 __hrtimer_run_queues+0x3c0/0xa20
 hrtimer_run_softirq+0x17a/0x240
 handle_softirqs+0x22a/0x840
 __irq_exit_rcu+0xca/0x220
 irq_exit_rcu+0x9/0x30
 sysvec_apic_timer_interrupt+0xa6/0xc0
 </IRQ>
 <TASK>
 asm_sysvec_apic_timer_interrupt+0x1a/0x20
RIP: 0010:_raw_spin_unlock_irqrestore+0x47/0x80
Code: f7 e8 8d f4 e7 f5 f7 c3 00 02 00 00 74 05 e8 10 7e 13 f6 9c 58 a9 00 02 00 00 75 27 f7 c3 00 02 00 00 74 01 fb bf 01 00 00 00 <e8> d4 76 d9 f5 65 8b 05 1d e3 85 07 85 c0 74 18 5b 41 5e e9 41 48
RSP: 0018:ffffc90004d2f3e8 EFLAGS: 00000206
RAX: 0000000000000006 RBX: 0000000000000296 RCX: 0000000080000001
RDX: 0000000000000000 RSI: ffffffff8dfd579c RDI: 0000000000000001
RBP: 0000000000000000 R08: ffffffff903365f7 R09: 1ffffffff2066cbe
R10: dffffc0000000000 R11: fffffbfff2066cbf R12: ffff88818fa0d000
R13: ffff88818fa0c000 R14: ffffffff9a768190 R15: 0000000000000001
 debug_check_no_obj_freed+0x52e/0x550
 free_unref_folios+0x560/0x1480
 folios_put_refs+0x9ff/0xb40
 shmem_undo_range+0x52c/0x1660
 shmem_evict_inode+0x289/0xae0
 evict+0x61e/0xb10
 __dentry_kill+0x1a2/0x5e0
 finish_dput+0xc9/0x480
 __fput+0x691/0xa60
 task_work_run+0x1d9/0x270
 exit_to_user_mode_loop+0xed/0x480
 do_syscall_64+0x33e/0xf80
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f6f6a95d04e
Code: 08 0f 85 a5 a8 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 80 00 00 00 00 48 83 ec 08
RSP: 002b:00007fff5327d548 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
RAX: 0000000000000000 RBX: 00005555760c3500 RCX: 00007f6f6a95d04e
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
RBP: 00007fff5327d5ec R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000000001a1
R13: 00000000000927c0 R14: 00000000002b3c81 R15: 00007fff5327d640
 </TASK>
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - nonzero urb status received: -71
usb 5-1: pegasus_irq - usb_submit_urb failed with result -1
ip6_tunnel: ip6tnl1 xmit: Local address not yet configured!
