• Tomas Melin's avatar
    [media] rc-main: fix lockdep splash for rc-main · 37fa8716
    Tomas Melin authored
    lockdep reports a potential circular dependecy deadlock when registering input device.
    
    Unlock mutex rc_dev->lock prior to calling ir_raw_event_register to avoid the circular
    dependency since that function also calls input_register_device and rc_open.
    
     ======================================================
     [ INFO: possible circular locking dependency detected ]
     3.17.0-rc7+ #24 Not tainted
     -------------------------------------------------------
     modprobe/647 is trying to acquire lock:
      (input_mutex){+.+.+.}, at: [<ffffffff812ed81c>] input_register_device+0x2ba/0x381
    
     but task is already holding lock:
      (ir_raw_handler_lock){+.+.+.}, at: [<ffffffff813186ed>] ir_raw_event_register+0x102/0x190
    
     which lock already depends on the new lock.
    
    [cut text]
    
     other info that might help us debug this:
    
     Chain exists of:
       input_mutex --> &dev->lock --> ir_raw_handler_lock
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(ir_raw_handler_lock);
                                    lock(&dev->lock);
                                    lock(ir_raw_handler_lock);
       lock(input_mutex);
    
      *** DEADLOCK ***
    
     4 locks held by modprobe/647:
      #0:  (&dev->mutex){......}, at: [<ffffffff812d19f3>] device_lock+0xf/0x11
      #1:  (&dev->mutex){......}, at: [<ffffffff812d19f3>] device_lock+0xf/0x11
      #2:  (&dev->lock){+.+.+.}, at: [<ffffffff81317fff>] rc_register_device+0x55d/0x58a
      #3:  (ir_raw_handler_lock){+.+.+.}, at: [<ffffffff813186ed>] ir_raw_event_register+0x102/0x190
    
     stack backtrace:
     CPU: 0 PID: 647 Comm: modprobe Not tainted 3.17.0-rc7+ #24
    
     Call Trace:
      [<ffffffff81489d6a>] dump_stack+0x46/0x58
      [<ffffffff81487699>] print_circular_bug+0x1f8/0x209
      [<ffffffff81074353>] __lock_acquire+0xb54/0xeda
      [<ffffffff81080f17>] ? console_unlock+0x34d/0x399
      [<ffffffff81074c01>] lock_acquire+0xd9/0x111
      [<ffffffff812ed81c>] ? input_register_device+0x2ba/0x381
      [<ffffffff8148e650>] mutex_lock_interruptible_nested+0x57/0x381
      [<ffffffff812ed81c>] ? input_register_device+0x2ba/0x381
      [<ffffffff81124e03>] ? kfree+0x7c/0x96
      [<ffffffff812ed81c>] ? input_register_device+0x2ba/0x381
      [<ffffffff81072531>] ? trace_hardirqs_on+0xd/0xf
      [<ffffffff812ed81c>] input_register_device+0x2ba/0x381
      [<ffffffff8131a537>] ir_mce_kbd_register+0x109/0x139
      [<ffffffff81318728>] ir_raw_event_register+0x13d/0x190
      [<ffffffff81317e40>] rc_register_device+0x39e/0x58a
      [<ffffffff81072531>] ? trace_hardirqs_on+0xd/0xf
      [<ffffffffa00cf2e3>] nvt_probe+0x5ad/0xd52 [nuvoton_cir]
      [<ffffffffa00ced36>] ? nvt_resume+0x80/0x80 [nuvoton_cir]
      [<ffffffff81296003>] pnp_device_probe+0x8c/0xa9
      [<ffffffff812d1b94>] ? driver_sysfs_add+0x6e/0x93
      [<ffffffff812d203a>] driver_probe_device+0xa1/0x1e3
      [<ffffffff812d217c>] ? driver_probe_device+0x1e3/0x1e3
      [<ffffffff812d21ca>] __driver_attach+0x4e/0x6f
      [<ffffffff812d075b>] bus_for_each_dev+0x5a/0x8c
      [<ffffffff812d1b24>] driver_attach+0x19/0x1b
      [<ffffffff812d1879>] bus_add_driver+0xf1/0x1d6
      [<ffffffff812d2817>] driver_register+0x87/0xbe
      [<ffffffffa0120000>] ? 0xffffffffa0120000
      [<ffffffff81295da4>] pnp_register_driver+0x1c/0x1e
      [<ffffffffa0120010>] nvt_init+0x10/0x1000 [nuvoton_cir]
      [<ffffffff8100030e>] do_one_initcall+0xea/0x18c
      [<ffffffff8111497f>] ? __vunmap+0x9d/0xc7
      [<ffffffff810a3ca1>] load_module+0x1c21/0x1f2c
      [<ffffffff810a0bce>] ? show_initstate+0x44/0x44
      [<ffffffff810a404e>] SyS_init_module+0xa2/0xb1
      [<ffffffff81490ed2>] system_call_fastpath+0x16/0x1b
    Signed-off-by: default avatarTomas Melin <tomas.melin@iki.fi>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
    37fa8716
rc-main.c 39.6 KB