The return value of memdup_user is a pointer to errno.Freeing it will cause error.Hence set it to NULL before branching to free the pointer.smatch also raises the same warning. Signed-off-by: Hari Prasath Gujulan Elango <hgujulan@xxxxxxxxxxx> --- v2:Remove unnecessary goto and return error directly.Use goto only if some cleanup is done.These were review comments by Julia Lawall. --- drivers/staging/rtl8712/rtl871x_ioctl_linux.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c index 42fba3f..f563b2d 100644 --- a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c +++ b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c @@ -1905,18 +1905,14 @@ static int r871x_mp_ioctl_hdl(struct net_device *dev, uint status; int ret = 0; - if ((!p->length) || (!p->pointer)) { - ret = -EINVAL; - goto _r871x_mp_ioctl_hdl_exit; - } + if ((!p->length) || (!p->pointer)) + return -EINVAL; bset = (u8)(p->flags & 0xFFFF); len = p->length; pparmbuf = NULL; pparmbuf = memdup_user(p->pointer, len); - if (IS_ERR(pparmbuf)) { - ret = PTR_ERR(pparmbuf); - goto _r871x_mp_ioctl_hdl_exit; - } + if (IS_ERR(pparmbuf)) + return PTR_ERR(pparmbuf); poidparam = (struct mp_ioctl_param *)pparmbuf; if (poidparam->subcode >= MAX_MP_IOCTL_SUBCODE) { ret = -EINVAL; @@ -2058,21 +2054,15 @@ static int r871x_set_chplan(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - int ret = 0; struct _adapter *padapter = netdev_priv(dev); struct iw_point *pdata = &wrqu->data; int ch_plan = -1; - if ((padapter->bDriverStopped) || (pdata == NULL)) { - ret = -EINVAL; - goto exit; - } + if ((padapter->bDriverStopped) || (pdata == NULL)) + return -EINVAL; ch_plan = (int)*extra; r8712_set_chplan_cmd(padapter, ch_plan); - -exit: - - return ret; + return 0; } static int r871x_wps_start(struct net_device *dev, -- 1.9.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel