Already in HWE 5.3 kernel

** Changed in: kunpeng920/ubuntu-18.04-hwe
    Milestone: ubuntu-18.04.5 => ubuntu-18.04.4-sru-2

** Changed in: kunpeng920/ubuntu-18.04-hwe
       Status: Fix Committed => Fix Released

** Changed in: kunpeng920
       Status: Fix Committed => 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/1854550

Title:
  [scsi-1130]scsi: scsi_transport_sas: Fix memory leak when removing
  devices

Status in kunpeng920:
  Fix Released
Status in kunpeng920 ubuntu-18.04 series:
  Invalid
Status in kunpeng920 ubuntu-18.04-hwe series:
  Fix Released
Status in kunpeng920 ubuntu-19.04 series:
  Won't Fix
Status in kunpeng920 ubuntu-19.10 series:
  Won't Fix
Status in kunpeng920 ubuntu-20.04 series:
  Fix Released
Status in kunpeng920 upstream-kernel series:
  Fix Released
Status in linux package in Ubuntu:
  Fix Released

Bug description:
  [Impact]
  kmemleak detects potential leaks and this is the fix

  [Test Case]
  Not known case, regression test on system with SAS host is needed.

  [Fix]
  82ea3e0e12 scsi: scsi_transport_sas: Fix memory leak when removing devices

  [Regression Risk]
  Patch is simple and reviewed on upstream. Since modification is for scsi 
subsystem not on a single driver, applying on focal gives us enough time for 
test.

  "[Steps to reproduce]
  Enable memleak, and do as follows:
  root@(none)$ echo 0 > 
/sys/devices/platform/HISI0162:01/host0/port-0:0/expander-0:0/port-0:0:10/phy-0:0:10/sas_phy/phy-0:0:10/enable
  [   79.857888] hisi_sas_v2_hw HISI0162:01: dev[7:1] is gone
  root@(none)$ echo scan > /sys/kernel/debug/kmemleak
  [  131.656603] kmemleak: 3 new suspected memory leaks (see 
/sys/kernel/debug/kmemleak)
  root@(none)$ more /sys/kernel/debug/kmemleak
  unreferenced object 0xffff041da5c66000 (size 256):
    comm ""kworker/u128:1"", pid 549, jiffies 4294898543 (age 113.728s)
    hex dump (first 32 bytes):
      00 5e c6 a5 1d 04 ff ff 01 00 00 00 00 00 00 00  .^..............
      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    backtrace:
      [<(____ptrval____)>] kmem_cache_alloc+0x188/0x260
      [<(____ptrval____)>] bsg_setup_queue+0x48/0x1a8
      [<(____ptrval____)>] sas_rphy_add+0x108/0x2d0
      [<(____ptrval____)>] sas_probe_devices+0x168/0x208
      [<(____ptrval____)>] sas_discover_domain+0x660/0x9c8
      [<(____ptrval____)>] process_one_work+0x3f8/0x690
      [<(____ptrval____)>] worker_thread+0x70/0x6a0
      [<(____ptrval____)>] kthread+0x1b8/0x1c0
      [<(____ptrval____)>] ret_from_fork+0x10/0x18
  unreferenced object 0xffff041d8c075400 (size 128):
    comm ""kworker/u128:1"", pid 549, jiffies 4294898543 (age 113.728s)
    hex dump (first 32 bytes):
      00 40 25 97 1d 00 ff ff 00 00 00 00 00 00 00 00  .@%.............
      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    backtrace:
      [<(____ptrval____)>] __kmalloc_node+0x1a8/0x2c8
      [<(____ptrval____)>] blk_mq_realloc_tag_set_tags.part.70+0x48/0xd8
      [<(____ptrval____)>] blk_mq_alloc_tag_set+0x1dc/0x530
      [<(____ptrval____)>] bsg_setup_queue+0xe8/0x1a8
      [<(____ptrval____)>] sas_rphy_add+0x108/0x2d0
      [<(____ptrval____)>] sas_probe_devices+0x168/0x208
      [<(____ptrval____)>] sas_discover_domain+0x660/0x9c8
      [<(____ptrval____)>] process_one_work+0x3f8/0x690
      [<(____ptrval____)>] worker_thread+0x70/0x6a0
      [<(____ptrval____)>] kthread+0x1b8/0x1c0
      [<(____ptrval____)>] ret_from_fork+0x10/0x18
  unreferenced object 0xffff041da5c65e00 (size 256):
    comm ""kworker/u128:1"", pid 549, jiffies 4294898543 (age 113.728s)
    hex dump (first 32 bytes):
      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    backtrace:
      [<(____ptrval____)>] __kmalloc_node+0x1a8/0x2c8
      [<(____ptrval____)>] blk_mq_alloc_tag_set+0x254/0x530
      [<(____ptrval____)>] bsg_setup_queue+0xe8/0x1a8
      [<(____ptrval____)>] sas_rphy_add+0x108/0x2d0
      [<(____ptrval____)>] sas_probe_devices+0x168/0x208
      [<(____ptrval____)>] sas_discover_domain+0x660/0x9c8
      [<(____ptrval____)>] process_one_work+0x3f8/0x690
      [<(____ptrval____)>] worker_thread+0x70/0x6a0
      [<(____ptrval____)>] kthread+0x1b8/0x1c0
      [<(____ptrval____)>] ret_from_fork+0x10/0x18
  root@(none)$

  [solution]
  Fix by doing the queue removal in one place - in sas_rphy_remove() -
  instead of unregistering the queue in sas_rphy_remove() and finally
  cleaning up the queue in calling blk_cleanup_queue() from
  sas_end_device_release() or sas_expander_release().

  Function bsg_remove_queue() can handle a NULL pointer q, so remove the
  precheck in sas_rphy_remove().
  "
  scsi: scsi_transport_sas: Fix memory leak when removing devices

To manage notifications about this bug go to:
https://bugs.launchpad.net/kunpeng920/+bug/1854550/+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