From: Roland Vossen Date: Tue, 3 May 2011 09:35:03 +0000 (+0200) Subject: staging: brcm80211: bugfix for fullmac return codes X-Git-Tag: v3.0-rc1~336^2~590 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=2c09ded5763751beb7fc7c2968480fa5cb21a219;p=karo-tx-linux.git staging: brcm80211: bugfix for fullmac return codes Some code paths in the fullmac driver did not return a negative value on error. This has been corrected. Cc: devel@linuxdriverproject.org Cc: linux-wireless@vger.kernel.org Cc: Brett Rudley Cc: Henry Ptasinski Cc: Roland Vossen Signed-off-by: Arend van Spriel Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_common.c b/drivers/staging/brcm80211/brcmfmac/dhd_common.c index 8d5acb8390c6..9eca2081f5ab 100644 --- a/drivers/staging/brcm80211/brcmfmac/dhd_common.c +++ b/drivers/staging/brcm80211/brcmfmac/dhd_common.c @@ -432,7 +432,7 @@ int dhd_ioctl(dhd_pub_t *dhd_pub, dhd_ioctl_t *ioc, void *buf, uint buflen) case DHD_GET_VERSION: if (buflen < sizeof(int)) - bcmerror = BCME_BUFTOOSHORT; + bcmerror = -BCME_BUFTOOSHORT; else *(int *)buf = DHD_IOCTL_VERSION; break; diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_linux.c b/drivers/staging/brcm80211/brcmfmac/dhd_linux.c index bb4fdc6237a7..b43ac8a272e1 100644 --- a/drivers/staging/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/staging/brcm80211/brcmfmac/dhd_linux.c @@ -1699,7 +1699,7 @@ static int dhd_ioctl_entry(struct net_device *net, struct ifreq *ifr, int cmd) /* Copy the ioc control structure part of ioctl request */ if (copy_from_user(&ioc, ifr->ifr_data, sizeof(wl_ioctl_t))) { - bcmerror = BCME_BADADDR; + bcmerror = -BCME_BADADDR; goto done; } @@ -1715,11 +1715,11 @@ static int dhd_ioctl_entry(struct net_device *net, struct ifreq *ifr, int cmd) { buf = kmalloc(buflen, GFP_ATOMIC); if (!buf) { - bcmerror = BCME_NOMEM; + bcmerror = -BCME_NOMEM; goto done; } if (copy_from_user(buf, ioc.buf, buflen)) { - bcmerror = BCME_BADADDR; + bcmerror = -BCME_BADADDR; goto done; } } @@ -1728,12 +1728,12 @@ static int dhd_ioctl_entry(struct net_device *net, struct ifreq *ifr, int cmd) /* To differentiate between wl and dhd read 4 more byes */ if ((copy_from_user(&driver, (char *)ifr->ifr_data + sizeof(wl_ioctl_t), sizeof(uint)) != 0)) { - bcmerror = BCME_BADADDR; + bcmerror = -BCME_BADADDR; goto done; } if (!capable(CAP_NET_ADMIN)) { - bcmerror = BCME_EPERM; + bcmerror = -BCME_EPERM; goto done; }