| From: Larry Finger <Larry.Finger@lwfinger.net> |
| Date: Mon, 19 Nov 2018 20:01:24 +0200 |
| Subject: b43: Fix error in cordic routine |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 8ea3819c0bbef57a51d8abe579e211033e861677 upstream. |
| |
| The cordic routine for calculating sines and cosines that was added in |
| commit 6f98e62a9f1b ("b43: update cordic code to match current specs") |
| 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@plaes.org> |
| Cc: Rafał Miłecki <zajec5@gmail.com> |
| Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> |
| Signed-off-by: Priit Laes <plaes@plaes.org> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| [bwh: Backported to 3.16: adjust filename] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/net/wireless/b43/phy_common.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/net/wireless/b43/phy_common.c |
| +++ b/drivers/net/wireless/b43/phy_common.c |
| @@ -596,7 +596,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)) |