Messages in this thread | | | Subject | Re: [PATCH] ata: fix a race condition when internal cmd time out | From | Jason Yan <> | Date | Sat, 16 Feb 2019 16:43:49 +0800 |
| |
Hi, Sergei
Thanks for the review.
On 2019/2/16 15:45, Sergei Shtylyov wrote: > Hello! > > On 16.02.2019 6:42, Jason Yan wrote: > >> For internal cmds, we will unmap DMA memory associated with the cmd >> before we abort the cmd. If DMA transfering data before the aborting, > > Transferring. > >> bus error will occured. > > Occur. > >> 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 > > Moving. > >> 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@huawei.com> >> Signed-off-by: Jason Yan <yanaijie@huawei.com> > [...] > > MBR, Sergei > >
| |