** Information type changed from Proprietary to Public

** Also affects: linux (Ubuntu Artful)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu Artful)
       Status: New => Fix Released

** Changed in: intel
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1704318

Title:
  [Bug] Crystal Ridge - 4.12 - libnvdimm: fix nvdimm_bus_lock() vs
  device_lock() ordering

Status in intel:
  Fix Released
Status in linux package in Ubuntu:
  Fix Released
Status in linux source package in Artful:
  Fix Released

Bug description:
  Description:

  A debug patch to turn the standard device_lock() into something that
  lockdep can analyze yielded the following:

  ======================================================
  [ INFO: possible circular locking dependency detected ]
  4.11.0-rc4+ #106 Tainted: G O
  -------------------------------------------------------
  lt-libndctl/1898 is trying to acquire lock:
  (&dev->nvdimm_mutex/3){..+.}, at: [<ffffffffc023c948>] 
nd_attach_ndns+0x178/0x1b0 [libnvdimm]

  but task is already holding lock:
  (&nvdimm_bus->reconfig_mutex){..+.}, at: [<ffffffffc022e0b1>] 
nvdimm_bus_lock+0x21/0x30 [libnvdimm]

  which lock already depends on the new lock.

  the existing dependency chain (in reverse order) is:

  > #1 (&nvdimm_bus>reconfig_mutex){..+.}:
  lock_acquire+0xf6/0x1f0
  __mutex_lock+0x88/0x980
  mutex_lock_nested+0x1b/0x20
  nvdimm_bus_lock+0x21/0x30 [libnvdimm]
  nvdimm_namespace_capacity+0x1b/0x40 [libnvdimm]
  nvdimm_namespace_common_probe+0x230/0x510 [libnvdimm]
  nd_pmem_probe+0x14/0x180 [nd_pmem]
  nvdimm_bus_probe+0xa9/0x260 [libnvdimm]

  > #0 (&dev>nvdimm_mutex/3){..+.}:
  __lock_acquire+0x1107/0x1280
  lock_acquire+0xf6/0x1f0
  __mutex_lock+0x88/0x980
  mutex_lock_nested+0x1b/0x20
  nd_attach_ndns+0x178/0x1b0 [libnvdimm]
  nd_namespace_store+0x308/0x3c0 [libnvdimm]
  namespace_store+0x87/0x220 [libnvdimm]

  In this case '&dev->nvdimm_mutex/3' mirrors '&dev->mutex'.

  Fix this by replacing the use of device_lock() with nvdimm_bus_lock() to 
protect
  nd_

  _ndns() operations.

  Target Kernel:4.12
  Target Release: 17.10

To manage notifications about this bug go to:
https://bugs.launchpad.net/intel/+bug/1704318/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to