mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 20:56:42 +07:00
wl1271: fix timeout in wl1271_top_reg_read
I noticed a timeout bug in /drivers/net/wireless/wl12xx/wl1271_spi.c In the current code you cannot tell why you exited the "poll for data ready" do-while loop if exiting was done after the last possible loop. Then timeout==0 regardless of (val & OCP_READY_MASK) or !(val & OCP_READY_MASK), leading to possible false timeout... Simple correction could be decreasing timeout after checking for !(val & OCP_READY_MASK), not before (Manually converted from email to an actual patch by me. -- JWL) Reported-by: "Juha Leppanen" <juha_motorsportcom@luukku.com> Signed-off-by: "Juha Leppanen" <juha_motorsportcom@luukku.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
891dc5e737
commit
51633632ef
@ -397,8 +397,7 @@ u16 wl1271_top_reg_read(struct wl1271 *wl, int addr)
|
||||
/* poll for data ready */
|
||||
do {
|
||||
val = wl1271_spi_read32(wl, OCP_DATA_READ);
|
||||
timeout--;
|
||||
} while (!(val & OCP_READY_MASK) && timeout);
|
||||
} while (!(val & OCP_READY_MASK) && --timeout);
|
||||
|
||||
if (!timeout) {
|
||||
wl1271_warning("Top register access timed out.");
|
||||
|
Loading…
Reference in New Issue
Block a user