• A
    AHCI: Fix port reset race · c9b308d2
    Alexander Graf 提交于
    bdrv_aio_cancel() can trigger bdrv_aio_flush() which makes all aio
    that is currently in flight finish. So what we do is:
    
      port reset
      detect ncq in flight
      cancel ncq
      delete ncq sg list
    
    at which point we have double freed the sg list. Instead, with this
    patch we do:
    
      port reset
      detect ncq in flight
      cancel ncq
      check if we are really still in flight
      delete ncq sg list
    
    which makes things work and gets rid of the race.
    Signed-off-by: NAlexander Graf <agraf@suse.de>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    c9b308d2
ahci.c 35.8 KB