1. 08 3月, 2022 2 次提交
  2. 28 2月, 2022 12 次提交
  3. 23 2月, 2022 2 次提交
  4. 17 2月, 2022 1 次提交
  5. 09 2月, 2022 1 次提交
  6. 02 2月, 2022 1 次提交
    • S
      nvme: fix a possible use-after-free in controller reset during load · 0fa0f99f
      Sagi Grimberg 提交于
      Unlike .queue_rq, in .submit_async_event drivers may not check the ctrl
      readiness for AER submission. This may lead to a use-after-free
      condition that was observed with nvme-tcp.
      
      The race condition may happen in the following scenario:
      1. driver executes its reset_ctrl_work
      2. -> nvme_stop_ctrl - flushes ctrl async_event_work
      3. ctrl sends AEN which is received by the host, which in turn
         schedules AEN handling
      4. teardown admin queue (which releases the queue socket)
      5. AEN processed, submits another AER, calling the driver to submit
      6. driver attempts to send the cmd
      ==> use-after-free
      
      In order to fix that, add ctrl state check to validate the ctrl
      is actually able to accept the AER submission.
      
      This addresses the above race in controller resets because the driver
      during teardown should:
      1. change ctrl state to RESETTING
      2. flush async_event_work (as well as other async work elements)
      
      So after 1,2, any other AER command will find the
      ctrl state to be RESETTING and bail out without submitting the AER.
      Signed-off-by: NSagi Grimberg <sagi@grimberg.me>
      0fa0f99f
  7. 23 12月, 2021 3 次提交
  8. 08 12月, 2021 1 次提交
    • R
      nvme: fix use after free when disconnecting a reconnecting ctrl · 8b77fa6f
      Ruozhu Li 提交于
      A crash happens when trying to disconnect a reconnecting ctrl:
      
       1) The network was cut off when the connection was just established,
          scan work hang there waiting for some IOs complete.  Those I/Os were
          retried because we return BLK_STS_RESOURCE to blk in reconnecting.
       2) After a while, I tried to disconnect this connection.  This
          procedure also hangs because it tried to obtain ctrl->scan_lock.
          It should be noted that now we have switched the controller state
          to NVME_CTRL_DELETING.
       3) In nvme_check_ready(), we always return true when ctrl->state is
          NVME_CTRL_DELETING, so those retrying I/Os were issued to the bottom
          device which was already freed.
      
      To fix this, when ctrl->state is NVME_CTRL_DELETING, issue cmd to bottom
      device only when queue state is live.  If not, return host path error to
      the block layer
      Signed-off-by: NRuozhu Li <liruozhu@huawei.com>
      Reviewed-by: NSagi Grimberg <sagi@grimberg.me>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      8b77fa6f
  9. 06 12月, 2021 2 次提交
  10. 29 11月, 2021 1 次提交
  11. 24 11月, 2021 2 次提交
  12. 09 11月, 2021 1 次提交
  13. 21 10月, 2021 3 次提交
  14. 20 10月, 2021 6 次提交
  15. 19 10月, 2021 1 次提交
  16. 18 10月, 2021 1 次提交