[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <63bc665b-4f5f-0845-9767-825925ead80a@cogentembedded.com>
Date: Sat, 16 Feb 2019 10:45:49 +0300
From: Sergei Shtylyov <sergei.shtylyov@...entembedded.com>
To: Jason Yan <yanaijie@...wei.com>, linux-ide@...r.kernel.org,
tj@...nel.org, axboe@...nel.dk, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ata: fix a race condition when internal cmd time out
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@...wei.com>
> Signed-off-by: Jason Yan <yanaijie@...wei.com>
[...]
MBR, Sergei
Powered by blists - more mailing lists