smc911x: test after postfix decrement fails in smc911x_{reset,drop_pkt}
Subsystems (2)
PATCH 1/1 smc911x: test after postfix decrement fails in smc911x_{reset,drop_pkt}
When timeout reaches 0 the postfix decrement still subtracts, so the test fails
Signed-off-by Roel Kluin <[email protected]>
---
drivers/net/smc911x.c +3 -3
@@ -243,7 +243,7 @@ static void smc911x_reset(struct net_device *dev)do {udelay (10 ); reg =SMC_GET_PMT_CTRL () &PMT_CTRL_READY_ ; - }while ( timeout-- && !reg); + }while ( --timeout && !reg);if (timeout ==0 ) {PRINTK ("%s: smc911x_reset timeout waiting for PM restore\n" , dev->name);return ;
@@ -267,7 +267,7 @@ static void smc911x_reset(struct net_device *dev) resets++;break ; } - }while ( timeout-- && (reg &HW_CFG_SRST_ )); + }while ( --timeout && (reg &HW_CFG_SRST_ )); }if (timeout ==0 ) {PRINTK ("%s: smc911x_reset timeout waiting for reset\n" , dev->name);
@@ -413,7 +413,7 @@ static inline void smc911x_drop_pkt(struct net_device *dev)do {udelay (10 ); reg =SMC_GET_RX_DP_CTRL () &RX_DP_CTRL_FFWD_BUSY_ ; - }while ( timeout-- && reg); + }while ( --timeout && reg);if (timeout ==0 ) {PRINTK ("%s: timeout waiting for RX fast forward\n" , dev->name); }
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Roel" == Roel Kluin <[email protected]> writes:
Roel> When timeout reaches 0 the postfix decrement still subtracts, Roel> so the test fails
Ahh, good catch. Notice that Nicolas isn't the author of smc911x, Dustin McIntire is.
Acked-by Peter Korsgaard <[email protected]>
Roel> Signed-off-by: Roel Kluin <[email protected]>
Roel> ---
Roel> diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c Roel> index 76cc1d3..2126d24 100644
Roel> --- a/drivers/net/smc911x.c
Roel> +++ b/drivers/net/smc911x.c
Roel> @@ -243,7 +243,7 @@ static void smc911x_reset(struct net_device *dev)
Roel> do {
Roel> udelay(10);
Roel> reg = SMC_GET_PMT_CTRL() & PMT_CTRL_READY_;
Roel> - } while ( timeout-- && !reg);
Roel> + } while ( --timeout && !reg);
Roel> if (timeout == 0) {
Roel> PRINTK("%s: smc911x_reset timeout waiting for PM restore\n", dev->name);
Roel> return;
Roel> @@ -267,7 +267,7 @@ static void smc911x_reset(struct net_device *dev)
Roel> resets++;
Roel> break;
Roel> }
Roel> - } while ( timeout-- && (reg & HW_CFG_SRST_));
Roel> + } while ( --timeout && (reg & HW_CFG_SRST_));
Roel> }
Roel> if (timeout == 0) {
Roel> PRINTK("%s: smc911x_reset timeout waiting for reset\n", dev->name);
Roel> @@ -413,7 +413,7 @@ static inline void smc911x_drop_pkt(struct net_device *dev)
Roel> do {
Roel> udelay(10);
Roel> reg = SMC_GET_RX_DP_CTRL() & RX_DP_CTRL_FFWD_BUSY_;
Roel> - } while ( timeout-- && reg);
Roel> + } while ( --timeout && reg);
Roel> if (timeout == 0) {
Roel> PRINTK("%s: timeout waiting for RX fast forward\n", dev->name);
Roel> }Roel> --
Signature · 1 line
Bye, Peter Korsgaard