[openwrt/openwrt] kernel: 5.10: fix busy wait loop in mediatek PPE code

LEDE Commits lede-commits at lists.infradead.org
Tue Feb 16 17:49:37 EST 2021


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/99f2b464b4e550865c2a3288fa0b88db2869f798

commit 99f2b464b4e550865c2a3288fa0b88db2869f798
Author: Adrian Schmutzler <freifunk at adrianschmutzler.de>
AuthorDate: Tue Feb 16 23:16:00 2021 +0100

    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 at adrianschmutzler.de>
---
 .../770-15-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 at 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;
 +



More information about the lede-commits mailing list