Commit 094c281
net: hns3: use appropriate barrier function after setting a bit value
There is a memory barrier in followed case. When set the port down,
hclgevf_set_timmer will set DOWN in state. Meanwhile, the service task has
different behaviour based on whether the state is DOWN. Thus, to make sure
service task see DOWN, use smp_mb__after_atomic after calling set_bit().
CPU0 CPU1
========================== ===================================
hclgevf_set_timer_task() hclgevf_periodic_service_task()
set_bit(DOWN,state) test_bit(DOWN,state)
pf also has this issue.
Fixes: ff20009 ("net: hns3: remove unnecessary work in hclgevf_main")
Fixes: 1c6dfe6 ("net: hns3: remove mailbox and reset work in hclge_main")
Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>1 parent 950aa42 commit 094c281
2 files changed
Lines changed: 2 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7957 | 7957 | | |
7958 | 7958 | | |
7959 | 7959 | | |
7960 | | - | |
7961 | | - | |
| 7960 | + | |
7962 | 7961 | | |
7963 | 7962 | | |
7964 | 7963 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2181 | 2181 | | |
2182 | 2182 | | |
2183 | 2183 | | |
2184 | | - | |
2185 | | - | |
| 2184 | + | |
2186 | 2185 | | |
2187 | 2186 | | |
2188 | 2187 | | |
| |||
0 commit comments