From: Jia-Ju Bai <baiji...@tsinghua.edu.cn>
Date: Sun,  2 Aug 2020 17:33:40 +0800

> In queue_skb(), skb->data is mapped to streaming DMA on line 850:
>   dma_map_single(..., skb->data, ...);
> 
> Then skb->data is accessed on lines 862 and 863:
>   tbd->word_4 = (skb->data[0] << 24) | (skb->data[1] << 16) |
>            (skb->data[2] <<  8) | (skb->data[3] <<  0);
> and on lines 893 and 894:
>   tbd->word_4 = (skb->data[0] << 24) | (skb->data[1] << 16) |
>            (skb->data[2] <<  8) | (skb->data[3] <<  0);
> 
> These accesses may cause data inconsistency between CPU cache and
> hardware.
> 
> To fix this problem, the calculation result of skb->data is stored in a
> local variable before DMA mapping, and then the driver accesses this
> local variable instead of skb->data.
> 
> Signed-off-by: Jia-Ju Bai <baiji...@tsinghua.edu.cn>

Applied.

Reply via email to