For internal cmds, we will unmap DMA memory associated with the cmd
before we abort the cmd. If DMA transfering data before the aborting,
bus error will occured.
ata_exec_internal_sg
->ata_port_freeze if timeout
->ata_qc_complete
->ata_sg_clean
dma transfering data = bus error
->ap->ops->post_internal_cmd
->sas_ata_post_internal
->sas_ata_internal_abort
->abort the cmd
Fix this by move post_internal_cmd() before unmapping the DMA memory
when time out. Notice that we have to set ATA_QCFLAG_FAILED flag before[...]
calling post_internal_cmd() so that the aborting will work.
Reported-by: luojian <luojian5@xxxxxxxxxx>
Signed-off-by: Jason Yan <yanaijie@xxxxxxxxxx>