1. 25 Nov, 2022 2 commits
    • Yang Yingliang's avatar
      scsi: hpsa: Fix error handling in hpsa_add_sas_host() · 4ef174a3
      Yang Yingliang authored
      hpsa_sas_port_add_phy() does:
        ...
        sas_phy_add()  -> may return error here
        sas_port_add_phy()
        ...
      
      Whereas hpsa_free_sas_phy() does:
        ...
        sas_port_delete_phy()
        sas_phy_delete()
        ...
      
      If hpsa_sas_port_add_phy() returns an error, hpsa_free_sas_phy() can not be
      called to free the memory because the port and the phy have not been added
      yet.
      
      Replace hpsa_free_sas_phy() with sas_phy_free() and kfree() to avoid kernel
      crash in this case.
      
      Fixes: d04e62b9 ("hpsa: add in sas transport class")
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Link: https://lore.kernel.org/r/20221110151129.394389-1-yangyingliang@huawei.comSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      4ef174a3
    • Yang Yingliang's avatar
      scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add() · 78316e9d
      Yang Yingliang authored
      In mpt3sas_transport_port_add(), if sas_rphy_add() returns error,
      sas_rphy_free() needs be called to free the resource allocated in
      sas_end_device_alloc(). Otherwise a kernel crash will happen:
      
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000108
      CPU: 45 PID: 37020 Comm: bash Kdump: loaded Tainted: G        W          6.1.0-rc1+ #189
      pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : device_del+0x54/0x3d0
      lr : device_del+0x37c/0x3d0
      Call trace:
       device_del+0x54/0x3d0
       attribute_container_class_device_del+0x28/0x38
       transport_remove_classdev+0x6c/0x80
       attribute_container_device_trigger+0x108/0x110
       transport_remove_device+0x28/0x38
       sas_rphy_remove+0x50/0x78 [scsi_transport_sas]
       sas_port_delete+0x30/0x148 [scsi_transport_sas]
       do_sas_phy_delete+0x78/0x80 [scsi_transport_sas]
       device_for_each_child+0x68/0xb0
       sas_remove_children+0x30/0x50 [scsi_transport_sas]
       sas_rphy_remove+0x38/0x78 [scsi_transport_sas]
       sas_port_delete+0x30/0x148 [scsi_transport_sas]
       do_sas_phy_delete+0x78/0x80 [scsi_transport_sas]
       device_for_each_child+0x68/0xb0
       sas_remove_children+0x30/0x50 [scsi_transport_sas]
       sas_remove_host+0x20/0x38 [scsi_transport_sas]
       scsih_remove+0xd8/0x420 [mpt3sas]
      
      Because transport_add_device() is not called when sas_rphy_add() fails, the
      device is not added. When sas_rphy_remove() is subsequently called to
      remove the device in the remove() path, a NULL pointer dereference happens.
      
      Fixes: f92363d1 ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Link: https://lore.kernel.org/r/20221109032403.1636422-1-yangyingliang@huawei.comSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      78316e9d
  2. 24 Nov, 2022 11 commits
  3. 17 Nov, 2022 17 commits
  4. 08 Nov, 2022 10 commits