On 02/08/2012 03:14 PM, Simon Graham wrote:
Callers of rtl_pci_init expect zero to be returned on error. Returning
the error code leads to the data being used when it shouldn't causing,
amongst other things, divide by zero panics attempting to use the
ring size that is set to zero.
Signed-off-by: Simon Graham<simon.graham@xxxxxxxxxxxxxxxxxxx>
---
drivers/net/wireless/rtlwifi/pci.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
index fb84707..f0ce366 100644
--- a/drivers/net/wireless/rtlwifi/pci.c
+++ b/drivers/net/wireless/rtlwifi/pci.c
@@ -1492,7 +1492,7 @@ static int rtl_pci_init(struct ieee80211_hw *hw, struct pci_dev *pdev)
if (err) {
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
"tx ring initialization failed\n");
- return err;
+ return 0;
}
return 1;
You must have an extreme memory limitation to find all these problems.
As long as you are reworking this section, I would prefer you leave the "return
err" as it is now, change the "return 1" to "return 0", and remove the not
operator in "err = !rtl_pci_init(hw, pdev);" call of this routine. I just
discovered it a few days ago, and it bothers me, but I've been too busy to
submit a fix. In addition, these changes will convert rtl_pci_init() into a more
normal routine that returns 0 if OK and non-zero on errors.
Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html