summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c
diff options
context:
space:
mode:
authorLuo bin <luobin9@huawei.com>2020-03-21 02:13:18 +0300
committerDavid S. Miller <davem@davemloft.net>2020-03-22 05:43:38 +0300
commit33f15da216a1f4566b4ec880942556ace30615df (patch)
treed5404ae2b8b6dfbfbec4c83b47076b66f6b5b356 /drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c
parent614eaa943e9fc3fcdbd4aa0692ae84973d363333 (diff)
downloadlinux-33f15da216a1f4566b4ec880942556ace30615df.tar.xz
hinic: fix out-of-order excution in arm cpu
add read barrier in driver code to keep from reading other fileds in dma memory which is writable for hw until we have verified the memory is valid for driver Signed-off-by: Luo bin <luobin9@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c')
-rw-r--r--drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c b/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c
index eb53c15b13f3..33f93cc25193 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c
@@ -623,6 +623,8 @@ static int cmdq_cmd_ceq_handler(struct hinic_cmdq *cmdq, u16 ci,
if (!CMDQ_WQE_COMPLETED(be32_to_cpu(ctrl->ctrl_info)))
return -EBUSY;
+ dma_rmb();
+
errcode = CMDQ_WQE_ERRCODE_GET(be32_to_cpu(status->status_info), VAL);
cmdq_sync_cmd_handler(cmdq, ci, errcode);