[PATCH] b43: Fix error in cordic routine

From: Larry Finger
Date: Sun Nov 18 2018 - 14:15:07 EST


The cordic routine for calculating sines and cosines that was added in
commit 986504540306 ("b43: make cordic common (LP-PHY and N-PHY need it)")
contains an error whereby a quantity declared u32 can in fact go negative.

This problem was detected by Priit Laes who is switching b43 to use the
routine in the library functions of the kernel.

Fixes: 986504540306 ("b43: make cordic common (LP-PHY and N-PHY need it)")
Reported-by: Priit Laes <plaes@xxxxxxxxx>
Cc: RafaÅ MiÅecki <zajec5@xxxxxxxxx>
Cc: Stable <stable@xxxxxxxxxxxxxxx> # 2.6.34
Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
---
drivers/net/wireless/broadcom/b43/phy_common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/b43/phy_common.c b/drivers/net/wireless/broadcom/b43/phy_common.c
index 85f2ca989565..ef3ffa5ad466 100644
--- a/drivers/net/wireless/broadcom/b43/phy_common.c
+++ b/drivers/net/wireless/broadcom/b43/phy_common.c
@@ -616,7 +616,7 @@ struct b43_c32 b43_cordic(int theta)
u8 i;
s32 tmp;
s8 signx = 1;
- u32 angle = 0;
+ s32 angle = 0;
struct b43_c32 ret = { .i = 39797, .q = 0, };

while (theta > (180 << 16))
--
2.16.4


--------------A4EEE76D88D7EF2499287287--