All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ajay Singh <ajay.kathat@microchip.com>
To: Claudiu Beznea <Claudiu.Beznea@microchip.com>
Cc: <linux-wireless@vger.kernel.org>, <devel@driverdev.osuosl.org>,
	<gregkh@linuxfoundation.org>, <ganesh.krishna@microchip.com>,
	<venkateswara.kaja@microchip.com>, <aditya.shankar@microchip.com>,
	<adham.abozaeid@microchip.com>
Subject: Re: [PATCH v2 25/26] staging: wilc1000: refactor wilc_netdev_init() to handle memory free in error path
Date: Mon, 10 Sep 2018 19:54:06 +0530	[thread overview]
Message-ID: <20180910195406.47e6c6a4@ajaysk-VirtualBox> (raw)
In-Reply-To: <4146484d-e815-7d02-88dd-dc66493d0719@microchip.com>

Hi Claudiu,

On Tue, 11 Sep 2018 12:21:13 +0300
Claudiu Beznea <Claudiu.Beznea@microchip.com> wrote:

> On 04.09.2018 09:39, Ajay Singh wrote:
> > Refactor the wilc_netdev_init() to cleanup the memory for error
> > scenario and remove unnecessary 'dev' pointer check.
> > 
> > Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
> > ---
> >  drivers/staging/wilc1000/linux_wlan.c             | 36
> > ++++++++++++++++-------
> > drivers/staging/wilc1000/wilc_wfi_cfgoperations.c |  6 +++- 2 files
> > changed, 30 insertions(+), 12 deletions(-)
> > 
> > diff --git a/drivers/staging/wilc1000/linux_wlan.c
> > b/drivers/staging/wilc1000/linux_wlan.c index d7d43fd..91a45a7
> > 100644 --- a/drivers/staging/wilc1000/linux_wlan.c
> > +++ b/drivers/staging/wilc1000/linux_wlan.c
> > @@ -1073,10 +1073,8 @@ int wilc_netdev_init(struct wilc **wilc,
> > struct device *dev, int io_type, INIT_LIST_HEAD(&wl->rxq_head.list);
> >  
> >  	wl->hif_workqueue =
> > create_singlethread_workqueue("WILC_wq");
> > -	if (!wl->hif_workqueue) {
> > -		kfree(wl);
> > -		return -ENOMEM;
> > -	}
> > +	if (!wl->hif_workqueue)
> > +		goto free_wl;
> >  
> >  	register_inetaddr_notifier(&g_dev_notifier);
> >  
> > @@ -1085,7 +1083,7 @@ int wilc_netdev_init(struct wilc **wilc,
> > struct device *dev, int io_type, 
> >  		ndev = alloc_etherdev(sizeof(struct wilc_vif));
> >  		if (!ndev)
> > -			return -ENOMEM;
> > +			goto free_ndev;
> >  
> >  		vif = netdev_priv(ndev);
> >  		memset(vif, 0, sizeof(struct wilc_vif));
> > @@ -1106,15 +1104,13 @@ int wilc_netdev_init(struct wilc **wilc,
> > struct device *dev, int io_type, ndev->netdev_ops =
> > &wilc_netdev_ops; 
> >  		wdev = wilc_create_wiphy(ndev, dev);
> > -
> > -		if (dev)
> > -			SET_NETDEV_DEV(ndev, dev);
> > -
> >  		if (!wdev) {
> >  			netdev_err(ndev, "Can't register WILC
> > Wiphy\n");
> > -			return -1;
> > +			goto free_ndev;
> >  		}
> >  
> > +		SET_NETDEV_DEV(ndev, dev);
> > +
> >  		vif->ndev->ieee80211_ptr = wdev;
> >  		vif->ndev->ml_priv = vif;
> >  		wdev->netdev = vif->ndev;
> > @@ -1125,11 +1121,29 @@ int wilc_netdev_init(struct wilc **wilc,
> > struct device *dev, int io_type, 
> >  		ret = register_netdev(ndev);
> >  		if (ret)
> > -			return ret;
> > +			goto free_ndev;  
> 
> In case this happens you will loose the return code of
> register_netdev() and you will return instead -ENOMEM. Maybe, the
> best approach will be to initialize ret = -ENOMEM while declaring it

Thanks for your suggestion to handle the return code.
I will work on it and submit the changes in different series. 

Regards,
Ajay

  reply	other threads:[~2018-09-11 15:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-04  6:39 [PATCH v2 00/26] staging: wilc1000: avoid use of static and global variable Ajay Singh
2018-09-04  6:39 ` [PATCH v2 01/26] staging: wilc1000: move 'wilc_enable_ps' global variable into 'wilc' struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 02/26] staging: wilc1000: move 'aging_timer' static variable to wilc_priv struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 03/26] staging: wilc1000: fix to use correct index to free scanned info in clear_shadow_scan() Ajay Singh
2018-09-04  6:39 ` [PATCH v2 04/26] staging: wilc1000: remove unnecessary NULL check " Ajay Singh
2018-09-04  6:39 ` [PATCH v2 05/26] staging: wilc1000: moved last_scanned_shadow & last_scanned_cnt to wilc_priv struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 06/26] staging: wilc1000: move during_ip_timer & wilc_optaining_ip to 'wilc_vif' struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 07/26] staging: wilc1000: remove unused variable 'op_ifcs' Ajay Singh
2018-09-04  6:39 ` [PATCH v2 08/26] staging: wilc1000: avoid use of extra 'if' condition in wilc_init() Ajay Singh
2018-09-04  6:39 ` [PATCH v2 09/26] staging: wilc1000: move static variable clients_count to 'wilc' structure Ajay Singh
2018-09-04  6:39 ` [PATCH v2 10/26] staging: wilc1000: refactor code to avoid use of wilc_set_multicast_list global Ajay Singh
2018-09-04  6:39 ` [PATCH v2 11/26] staging: wilc1000: move hif_workqueue static variables to 'wilc' structure Ajay Singh
2018-09-04  6:39 ` [PATCH v2 12/26] staging: wilc1000: move 'periodic_rssi' as part of 'wilc_vif' struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 13/26] staging: wilc1000: rename 'dummy_statistics' variable to 'periodic_stat' Ajay Singh
2018-09-04  6:39 ` [PATCH v2 14/26] staging: wilc1000: move 'rcv_assoc_resp' as part of hif_drv Ajay Singh
2018-09-04  6:39 ` [PATCH v2 15/26] staging: wilc1000: refactor tcp_process() to avoid extra leading tabs Ajay Singh
2018-09-04  6:39 ` [PATCH v2 16/26] staging: wilc1000: use lowercase for get_BSSID() and HIL variable Ajay Singh
2018-09-04  6:39 ` [PATCH v2 17/26] staging: wilc1000: move tcp_ack_filter algo related variables to 'wilc_vif' struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 18/26] staging: wilc1000: avoid line over 80 chars in wilc_wlan_txq_filter_dup_tcp_ack() Ajay Singh
2018-09-04  6:39 ` [PATCH v2 19/26] staging: wilc1000: use short names to fix over 80 issue in tcp_process() Ajay Singh
2018-09-04  6:39 ` [PATCH v2 20/26] staging: wilc1000: remove unused code to set and get IP address Ajay Singh
2018-09-04  6:39 ` [PATCH v2 21/26] staging: wilc1000: move 'chip_ps_state' static variable as part of 'wilc' struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 22/26] staging: wilc1000: move 'wilc_connecting' static variable to 'wilc_vif' struct Ajay Singh
2018-09-04  6:39 ` [PATCH v2 23/26] staging: wilc1000: remove unnecessary static variable 'p2p_listen_state' Ajay Singh
2018-09-04  6:39 ` [PATCH v2 24/26] staging: wilc1000: refactor code to move initilization in wilc_netdev_init() Ajay Singh
2018-09-04  6:39 ` [PATCH v2 25/26] staging: wilc1000: refactor wilc_netdev_init() to handle memory free in error path Ajay Singh
2018-09-11  9:21   ` Claudiu Beznea
2018-09-10 14:24     ` Ajay Singh [this message]
2018-09-04  6:39 ` [PATCH v2 26/26] staging: wilc1000: remove handle_hif_exit_work() function Ajay Singh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180910195406.47e6c6a4@ajaysk-VirtualBox \
    --to=ajay.kathat@microchip.com \
    --cc=Claudiu.Beznea@microchip.com \
    --cc=adham.abozaeid@microchip.com \
    --cc=aditya.shankar@microchip.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=ganesh.krishna@microchip.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=venkateswara.kaja@microchip.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.