lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Thu, 5 Sep 2013 08:06:12 -0700
From:	Stephen Hemminger <stephen@...workplumber.org>
To:	Amir Vadai <amirv@...lanox.com>
Cc:	netdev@...r.kernel.org
Subject: Fw: [Bug 60856] New: Enabling PCI pass-through triggers circular
 locking complaint



Begin forwarded message:

Date: Thu, 5 Sep 2013 02:54:21 -0700
From: "bugzilla-daemon@...zilla.kernel.org" <bugzilla-daemon@...zilla.kernel.org>
To: "stephen@...workplumber.org" <stephen@...workplumber.org>
Subject: [Bug 60856] New: Enabling PCI pass-through triggers circular locking complaint


https://bugzilla.kernel.org/show_bug.cgi?id=60856

            Bug ID: 60856
           Summary: Enabling PCI pass-through triggers circular locking
                    complaint
           Product: Networking
           Version: 2.5
    Kernel Version: 3.11
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Other
          Assignee: shemminger@...ux-foundation.org
          Reporter: bvanassche@....org
        Regression: Yes

When I enable PCI pass-through for an mlx4 HCA, a circular locking complaint is
reported.

PCI pass-through was enabled with the following script:

#!/bin/bash
vendor_id="15b3" # Mellanox
device_id="1003" # MT27500 Family [ConnectX-3]

modprobe pci_stub &&
echo "$vendor_id $device_id" >/sys/bus/pci/drivers/pci-stub/new_id &&
lspci -n -mm |
while read slot class vendor device rest; do
    slot="0000:${slot}"
    vendor="${vendor#\"}"
    vendor="${vendor%\"}"
    device="${device#\"}"
    device="${device%\"}"
    if [ "$vendor" = "$vendor_id" -a "$device" = "$device_id" ]; then
    echo "$slot" >/sys/bus/pci/devices/$slot/driver/unbind
    echo "$slot" >/sys/bus/pci/drivers/pci-stub/bind
    fi
done

Running the above script triggered the following lockdep complaint:

======================================================
[ INFO: possible circular locking dependency detected ]
3.11.0-debug+ #1 Not tainted
-------------------------------------------------------
assign-pci-dev-/3065 is trying to acquire lock:
 (s_active#79){++++.+}, at: [<ffffffff811d816b>] sysfs_addrm_finish+0x3b/0x70

but task is already holding lock:
 (rtnl_mutex){+.+.+.}, at: [<ffffffff81384117>] rtnl_lock+0x17/0x20

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (rtnl_mutex){+.+.+.}:
       [<ffffffff810a5eca>] lock_acquire+0x8a/0x120
       [<ffffffff8144c16d>] mutex_lock_nested+0x7d/0x380
       [<ffffffff81384117>] rtnl_lock+0x17/0x20
       [<ffffffffa048fb7e>] ipoib_set_mode+0xde/0xf0 [ib_ipoib]
       [<ffffffffa049686a>] set_mode+0x3a/0x90 [ib_ipoib]
       [<ffffffff812eec88>] dev_attr_store+0x18/0x30
       [<ffffffff811d6654>] sysfs_write_file+0xe4/0x150
       [<ffffffff81167f24>] vfs_write+0xc4/0x1e0
       [<ffffffff811683e5>] SyS_write+0x55/0xa0
       [<ffffffff81459fc2>] system_call_fastpath+0x16/0x1b

-> #0 (s_active#79){++++.+}:
       [<ffffffff810a57a6>] __lock_acquire+0x1d36/0x1e40
       [<ffffffff810a5eca>] lock_acquire+0x8a/0x120
       [<ffffffff811d75b6>] sysfs_deactivate+0x126/0x180
       [<ffffffff811d816b>] sysfs_addrm_finish+0x3b/0x70
       [<ffffffff811d86af>] sysfs_remove_dir+0x9f/0xd0
       [<ffffffff81228666>] kobject_del+0x16/0x40
       [<ffffffff812f037a>] device_del+0x18a/0x1d0
       [<ffffffff8138daf1>] netdev_unregister_kobject+0x71/0x80
       [<ffffffff8137339c>] rollback_registered_many+0x16c/0x220
       [<ffffffff81373661>] rollback_registered+0x31/0x40
       [<ffffffff81373ce8>] unregister_netdevice_queue+0x58/0xa0
       [<ffffffff81373e20>] unregister_netdev+0x20/0x30
       [<ffffffffa048dc01>] ipoib_remove_one+0xb1/0xf0 [ib_ipoib]
       [<ffffffffa035e57e>] ib_unregister_device+0x4e/0x110 [ib_core]
       [<ffffffffa044ebde>] mlx4_ib_remove+0x2e/0x1a0 [mlx4_ib]
       [<ffffffffa037e24b>] mlx4_remove_device+0x7b/0x90 [mlx4_core]
       [<ffffffffa037e5ab>] mlx4_unregister_device+0x4b/0x90 [mlx4_core]
       [<ffffffffa037fca4>] mlx4_remove_one+0x54/0x330 [mlx4_core]
       [<ffffffff812542a6>] pci_device_remove+0x46/0xc0
       [<ffffffff812f39ef>] __device_release_driver+0x7f/0xf0
       [<ffffffff812f3d4e>] device_release_driver+0x2e/0x40
       [<ffffffff812f28e3>] driver_unbind+0xa3/0xc0
       [<ffffffff812f1c24>] drv_attr_store+0x24/0x40
       [<ffffffff811d6654>] sysfs_write_file+0xe4/0x150
       [<ffffffff81167f24>] vfs_write+0xc4/0x1e0
       [<ffffffff811683e5>] SyS_write+0x55/0xa0
       [<ffffffff81459fc2>] system_call_fastpath+0x16/0x1b

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(rtnl_mutex);
                               lock(s_active#79);
                               lock(rtnl_mutex);
  lock(s_active#79);

 *** DEADLOCK ***

8 locks held by assign-pci-dev-/3065:
 #0:  (sb_writers#6){.+.+.+}, at: [<ffffffff81168003>] vfs_write+0x1a3/0x1e0
 #1:  (&buffer->mutex){+.+.+.}, at: [<ffffffff811d65b8>]
sysfs_write_file+0x48/0x150
 #2:  (s_active#185){.+.+.+}, at: [<ffffffff811d663c>]
sysfs_write_file+0xcc/0x150
 #3:  (&__lockdep_no_validate__){......}, at: [<ffffffff812f28db>]
driver_unbind+0x9b/0xc0
 #4:  (&__lockdep_no_validate__){......}, at: [<ffffffff812f3d46>]
device_release_driver+0x26/0x40
 #5:  (intf_mutex){+.+.+.}, at: [<ffffffffa037e583>]
mlx4_unregister_device+0x23/0x90 [mlx4_core]
 #6:  (device_mutex){+.+.+.}, at: [<ffffffffa035e557>]
ib_unregister_device+0x27/0x110 [ib_core]
 #7:  (rtnl_mutex){+.+.+.}, at: [<ffffffff81384117>] rtnl_lock+0x17/0x20

stack backtrace:
CPU: 1 PID: 3065 Comm: assign-pci-dev- Not tainted 3.11.0-debug+ #1
Hardware name: System manufacturer P5Q DELUXE/P5Q DELUXE, BIOS 2301
07/10/2009
 ffffffff81d67910 ffff8801b265d848 ffffffff8144973f 0000000000000007
 ffffffff81d67910 ffff8801b265d898 ffffffff814467da 0000000000000086
 ffff8801b265d928 ffff8801b37f5278 ffff8801b37f52b0 ffff8801b37f5278
Call Trace:
 [<ffffffff8144973f>] dump_stack+0x55/0x76
 [<ffffffff814467da>] print_circular_bug+0x1fb/0x20c
 [<ffffffff810a57a6>] __lock_acquire+0x1d36/0x1e40
 [<ffffffff8107c9e5>] ? sched_clock_local+0x25/0xa0
 [<ffffffff810a5eca>] lock_acquire+0x8a/0x120
 [<ffffffff811d816b>] ? sysfs_addrm_finish+0x3b/0x70
 [<ffffffff811d75b6>] sysfs_deactivate+0x126/0x180
 [<ffffffff811d816b>] ? sysfs_addrm_finish+0x3b/0x70
 [<ffffffff810a6829>] ? mark_held_locks+0xb9/0x140
 [<ffffffff811d816b>] sysfs_addrm_finish+0x3b/0x70
 [<ffffffff811d86af>] sysfs_remove_dir+0x9f/0xd0
 [<ffffffff81228666>] kobject_del+0x16/0x40
 [<ffffffff812f037a>] device_del+0x18a/0x1d0
 [<ffffffff8138daf1>] netdev_unregister_kobject+0x71/0x80
 [<ffffffff8137339c>] rollback_registered_many+0x16c/0x220
 [<ffffffff81384117>] ? rtnl_lock+0x17/0x20
 [<ffffffff81373661>] rollback_registered+0x31/0x40
 [<ffffffff81373ce8>] unregister_netdevice_queue+0x58/0xa0
 [<ffffffff81373e20>] unregister_netdev+0x20/0x30
 [<ffffffffa048dc01>] ipoib_remove_one+0xb1/0xf0 [ib_ipoib]
 [<ffffffffa035e57e>] ib_unregister_device+0x4e/0x110 [ib_core]
 [<ffffffffa044ebde>] mlx4_ib_remove+0x2e/0x1a0 [mlx4_ib]
 [<ffffffffa037e24b>] mlx4_remove_device+0x7b/0x90 [mlx4_core]
 [<ffffffffa037e5ab>] mlx4_unregister_device+0x4b/0x90 [mlx4_core]
 [<ffffffffa037fca4>] mlx4_remove_one+0x54/0x330 [mlx4_core]
 [<ffffffff812542a6>] pci_device_remove+0x46/0xc0
 [<ffffffff812f39ef>] __device_release_driver+0x7f/0xf0
 [<ffffffff812f3d4e>] device_release_driver+0x2e/0x40
 [<ffffffff812f28e3>] driver_unbind+0xa3/0xc0
 [<ffffffff812f1c24>] drv_attr_store+0x24/0x40
 [<ffffffff811d6654>] sysfs_write_file+0xe4/0x150
 [<ffffffff81167f24>] vfs_write+0xc4/0x1e0
 [<ffffffff811683e5>] SyS_write+0x55/0xa0
 [<ffffffff81459fc2>] system_call_fastpath+0x16/0x1b

--
You are receiving this mail because:
You are the assignee for the bug.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ