Messages in this thread | | | Date | Mon, 03 Aug 2020 15:51:44 -0700 (PDT) | Subject | Re: [PATCH] atm: idt77252: avoid accessing the data mapped to streaming DMA | From | David Miller <> |
| |
From: Jia-Ju Bai <baijiaju@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 <baijiaju@tsinghua.edu.cn>
Applied.
| |