Message ID | 558EB524.1050609@users.sourceforge.net (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
On Sat, 27 Jun 2015, SF Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Sat, 27 Jun 2015 16:00:59 +0200 > > The kfree() function was called in two cases by the mac_ioctl() function > during error handling even if the passed variable did not contain a pointer > for a valid data item. > > * This implementation detail could be improved by the introduction > of another jump label. > > * Drop an unnecessary initialisation for the variable "buff" then. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> > --- > drivers/staging/wilc1000/linux_wlan.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c > index 2aa8d9b..f492310 100644 > --- a/drivers/staging/wilc1000/linux_wlan.c > +++ b/drivers/staging/wilc1000/linux_wlan.c > @@ -2351,16 +2351,13 @@ int mac_close(struct net_device *ndev) > > int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) > { > - > - u8 *buff = NULL; > + u8 *buff; > s8 rssi; > u32 size = 0, length = 0; > perInterface_wlan_t *nic; > struct WILC_WFI_priv *priv; > s32 s32Error = WILC_SUCCESS; > > - > - Removing these blank lines seems to have nothing to do with the topic of the patch. julia > /* struct iwreq *wrq = (struct iwreq *) req; // tony moved to case SIOCSIWPRIV */ > #ifdef USE_WIRELESS > nic = netdev_priv(ndev); > @@ -2405,7 +2402,7 @@ int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) > if (copy_to_user(wrq->u.data.pointer, buff, size)) { > PRINT_ER("%s: failed to copy data to user buffer\n", __func__); > s32Error = -EFAULT; > - goto done; > + goto free_buffer; > } > } > } > @@ -2420,8 +2417,9 @@ int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) > } > } > > -done: > +free_buffer: > kfree(buff); > +done: > return s32Error; > } > > -- > 2.4.4 > > -- > To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Jun 27, 2015 at 04:37:24PM +0200, SF Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Sat, 27 Jun 2015 16:00:59 +0200 Again, please fix. > > The kfree() function was called in two cases by the mac_ioctl() function > during error handling even if the passed variable did not contain a pointer > for a valid data item. > > * This implementation detail could be improved by the introduction > of another jump label. > > * Drop an unnecessary initialisation for the variable "buff" then. That's a different issue, please fix it in a separate patch. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>> The kfree() function was called in two cases by the mac_ioctl() function >> during error handling even if the passed variable did not contain a pointer >> for a valid data item. >> >> * This implementation detail could be improved by the introduction >> of another jump label. >> >> * Drop an unnecessary initialisation for the variable "buff" then. > > That's a different issue, please fix it in a separate patch. I have got an other opinion here. This update suggestion depends on a small source code clean-up from the previous patch, doesn't it? Do you want that I split the second suggestion from this series into more steps? Regards, Markus -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c index 2aa8d9b..f492310 100644 --- a/drivers/staging/wilc1000/linux_wlan.c +++ b/drivers/staging/wilc1000/linux_wlan.c @@ -2351,16 +2351,13 @@ int mac_close(struct net_device *ndev) int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) { - - u8 *buff = NULL; + u8 *buff; s8 rssi; u32 size = 0, length = 0; perInterface_wlan_t *nic; struct WILC_WFI_priv *priv; s32 s32Error = WILC_SUCCESS; - - /* struct iwreq *wrq = (struct iwreq *) req; // tony moved to case SIOCSIWPRIV */ #ifdef USE_WIRELESS nic = netdev_priv(ndev); @@ -2405,7 +2402,7 @@ int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) if (copy_to_user(wrq->u.data.pointer, buff, size)) { PRINT_ER("%s: failed to copy data to user buffer\n", __func__); s32Error = -EFAULT; - goto done; + goto free_buffer; } } } @@ -2420,8 +2417,9 @@ int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) } } -done: +free_buffer: kfree(buff); +done: return s32Error; }