diff options
author | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2021-02-16 23:16:00 +0100 |
---|---|---|
committer | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2021-02-16 23:46:30 +0100 |
commit | 99f2b464b4e550865c2a3288fa0b88db2869f798 (patch) | |
tree | 202eb53c38d16c800b95cec04d84470d9736d8e5 | |
parent | 0e407dfe8bac1475f8f963dff699e434bbbeb4d5 (diff) | |
download | upstream-99f2b464b4e550865c2a3288fa0b88db2869f798.tar.gz upstream-99f2b464b4e550865c2a3288fa0b88db2869f798.tar.bz2 upstream-99f2b464b4e550865c2a3288fa0b88db2869f798.zip |
kernel: 5.10: fix busy wait loop in mediatek PPE code
Reapply changes added to 5.4 but not copied to 5.10:
3da4acaa7bba ("kernel: fix busy wait loop in mediatek PPE code")
The intention is for the loop to timeout if the body does not succeed.
The current logic calls time_is_before_jiffies(timeout) which is false
until after the timeout, so the loop body never executes.
time_is_after_jiffies(timeout) will return true until timeout is less
than jiffies, which is the intended behavior here.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
-rw-r--r-- | target/linux/generic/pending-5.10/770-15-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/target/linux/generic/pending-5.10/770-15-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch b/target/linux/generic/pending-5.10/770-15-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch index fa4803211a..09282175b0 100644 --- a/target/linux/generic/pending-5.10/770-15-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch +++ b/target/linux/generic/pending-5.10/770-15-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch @@ -185,7 +185,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> +{ + unsigned long timeout = jiffies + HZ; + -+ while (time_is_before_jiffies(timeout)) { ++ while (time_is_after_jiffies(timeout)) { + if (!(ppe_r32(ppe, MTK_PPE_GLO_CFG) & MTK_PPE_GLO_CFG_BUSY)) + return 0; + |