Linux wireless drivers development
 help / color / mirror / Atom feed
From: Ajay Singh <ajay.kathat@microchip.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: <linux-wireless@vger.kernel.org>, <devel@driverdev.osuosl.org>,
	<venkateswara.kaja@microchip.com>, <gregkh@linuxfoundation.org>,
	<ganesh.krishna@microchip.com>, <adham.abozaeid@microchip.com>,
	<aditya.shankar@microchip.com>
Subject: Re: [PATCH 29/29] staging: wilc1000: return exact error of register_netdev() from wilc_netdev_init()
Date: Wed, 19 Sep 2018 16:34:40 +0530	[thread overview]
Message-ID: <20180919163440.2dfd185b@ajaysk-VirtualBox> (raw)
In-Reply-To: <20180919094132.3lfouwwzc7z3thf4@mwanda>

Hi Dan,

Thanks your reviewing the patch.

On Wed, 19 Sep 2018 12:41:32 +0300
Dan Carpenter <dan.carpenter@oracle.com> wrote:

> I was waiting for you to send this like a spider waits for flies.  You
> fell directly into my trap.  Mwuahahahahaha.

Oops!!! I missed seeing it coming :)

> 
> drivers/staging/wilc1000/linux_wlan.c
>   1056  int wilc_netdev_init(struct wilc **wilc, struct device *dev,
> int io_type, 1057                       const struct wilc_hif_func
> *ops) 1058  {
>   1059          int i, ret = -ENOMEM;
>   1060          struct wilc_vif *vif;
>   1061          struct net_device *ndev;
>   1062          struct wilc *wl;
>   1063  
>   1064          wl = kzalloc(sizeof(*wl), GFP_KERNEL);
>   1065          if (!wl)
>   1066                  return ret;
>                                ^^^
> It's cleaner to return -ENOMEM so that we don't have to glance up to
> the declaration block.  This is especially true when "ret" is zero,
> btw, because that can indicate a reversed test.

I will change it to directly return -ENOMEM value.

> 
> 		if (!ret)
> 			return ret;
> 
> In this theoretically example it was supposed to be:
> 
> 		if (ret)
> 			return ret;
> 
> Normally, reversed conditions are caught in testing, but for the
> kernel, no one has the hardware to test everything so we do get
> reversed conditions from time to time.
> 
>   1067  
>   1068          if (wilc_wlan_cfg_init(wl))

I will set 'ret' value to -ENOMEM here also.

>   1069                  goto free_wl;
>   1070  
>   1071          *wilc = wl;
>   1072          wl->io_type = io_type;
>   1073          wl->hif_func = ops;
>   1074          wl->enable_ps = true;
>   1075          wl->chip_ps_state = CHIP_WAKEDUP;
>   1076          INIT_LIST_HEAD(&wl->txq_head.list);
>   1077          INIT_LIST_HEAD(&wl->rxq_head.list);
>   1078  
>   1079          wl->hif_workqueue =
> create_singlethread_workqueue("WILC_wq"); 1080          if
> (!wl->hif_workqueue) 1081                  goto free_cfg;
>   1082  
>   1083          register_inetaddr_notifier(&g_dev_notifier);
>   1084  
>   1085          for (i = 0; i < NUM_CONCURRENT_IFC; i++) {
>   1086                  struct wireless_dev *wdev;
>   1087  
>   1088                  ndev = alloc_etherdev(sizeof(struct
> wilc_vif)); 1089                  if (!ndev)
>   1090                          goto free_ndev;
>                                 ^^^^^^^^^^^^^^^
> ret is zero on the second iteration through the loop.

I will set 'ret' to -ENOMEM before 'goto', which should handle this
scenario.

> 
>   1091  
>   1092                  vif = netdev_priv(ndev);
>   1093                  memset(vif, 0, sizeof(struct wilc_vif));
>   1094  
>   1095                  if (i == 0) {
>   1096                          strcpy(ndev->name, "wlan%d");
>   1097                          vif->ifc_id = 1;
>   1098                  } else {
>   1099                          strcpy(ndev->name, "p2p%d");
>   1100                          vif->ifc_id = 0;
>   1101                  }
>   1102                  vif->wilc = *wilc;
>   1103                  vif->ndev = ndev;
>   1104                  wl->vif[i] = vif;
>   1105                  wl->vif_num = i;
>   1106                  vif->idx = wl->vif_num;
>   1107  
>   1108                  ndev->netdev_ops = &wilc_netdev_ops;
>   1109  
>   1110                  wdev = wilc_create_wiphy(ndev, dev);
>   1111                  if (!wdev) {
>   1112                          netdev_err(ndev, "Can't register WILC
> Wiphy\n"); 1113                          goto free_ndev;
>                                 ^^^^^^^^^^^^^^^
> Here too.

Same here, i.e setting ret = -ENOMEM should handle the condition.

Also I will remove the default setting of 'ret' value to -ENOMEM because
after modification the error scenarios will set 'ret' explicitly.

Regards,
Ajay

      reply	other threads:[~2018-09-19 16:42 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-19  6:04 [PATCH 00/29] staging: wilc1000: avoid static variables and cleanup changes Ajay Singh
2018-09-19  6:04 ` [PATCH 01/29] staging: wilc1000: change return type to 'void' for wilc_frame_register() Ajay Singh
2018-09-19  6:04 ` [PATCH 02/29] staging: wilc1000: change return type to 'void' for wilc_wlan_set_bssid() Ajay Singh
2018-09-19  6:04 ` [PATCH 03/29] staging: wilc1000: change return type to 'void' for lock init & deinit functions Ajay Singh
2018-09-19  6:04 ` [PATCH 04/29] staging: wilc1000: change return type to 'void' for wilc_deinit_host_int() Ajay Singh
2018-09-19  6:04 ` [PATCH 05/29] staging: wilc1000: change return type to 'void' for wilc_wfi_deinit_mon_interface() Ajay Singh
2018-09-19  6:04 ` [PATCH 06/29] staging: wilc1000: use 'void' return type for host_int_get_assoc_res_info() Ajay Singh
2018-09-19  6:04 ` [PATCH 07/29] staging: wilc1000: use 'void' return for wilc_wlan_txq_add_to_head() Ajay Singh
2018-09-19  6:04 ` [PATCH 08/29] staging: wilc1000: change return type to 'void' tcp ack filter functions Ajay Singh
2018-09-19  6:04 ` [PATCH 09/29] staging: wilc1000: use 'void' return for wilc_wlan_txq_filter_dup_tcp_ack() Ajay Singh
2018-09-19  6:05 ` [PATCH 10/29] staging: wilc1000: change return type to 'void' for wilc_wlan_cfg_indicate_rx() Ajay Singh
2018-09-19  6:05 ` [PATCH 11/29] staging: wilc1000: refactor wilc_wlan_parse_info_frame() function Ajay Singh
2018-09-19  6:05 ` [PATCH 12/29] staging: wilc1000: set default value of cfg response type in wilc_wlan_cfg_indicate_rx() Ajay Singh
2018-09-19  6:05 ` [PATCH 13/29] staging: wilc1000: changes 'val' type to u8 in wilc_cfg_byte struct Ajay Singh
2018-09-19  6:05 ` [PATCH 14/29] staging: wilc1000: remove unused wid type values Ajay Singh
2018-09-19  6:05 ` [PATCH 15/29] staging: wilc1000: remove unused wid from cfg struct Ajay Singh
2018-09-19  6:05 ` [PATCH 16/29] staging: wilc1000: refactor code to remove 'mac_status' from 'wilc_mac_cfg' struct Ajay Singh
2018-09-19  6:05 ` [PATCH 17/29] staging: wilc1000: refactor code to avoid static variables for config parameters Ajay Singh
2018-09-19  6:05 ` [PATCH 18/29] staging: wilc1000: rename 'wilc_mac_cfg' struct to 'wilc_cfg_str_vals' Ajay Singh
2018-09-19  6:05 ` [PATCH 19/29] staging: wilc1000: avoid the use of 'hif_driver_comp' completion variable Ajay Singh
2018-09-19  6:05 ` [PATCH 20/29] staging: wilc1000: remove use of unnecessary 'wilc_connected_ssid' variable Ajay Singh
2018-09-19  6:05 ` [PATCH 21/29] staging: wilc1000: avoid use of 'g_sdio' static variable Ajay Singh
2018-09-19  6:05 ` [PATCH 22/29] staging: wilc1000: avoid use of 'g_spi' " Ajay Singh
2018-09-19  6:05 ` [PATCH 23/29] staging: wilc1000: remove unnecessary memset in sdio_init() & wilc_spi_init() Ajay Singh
2018-09-19  6:05 ` [PATCH 24/29] staging: wilc1000: remove p2p related static variables to wilc_vif struct Ajay Singh
2018-09-19  6:05 ` [PATCH 25/29] staging: wilc1000: remove wilc_debugfs.c file as its not used Ajay Singh
2018-09-19  6:05 ` [PATCH 26/29] staging: wilc1000: remove unnecessary option used with ccflags-y in Makefile Ajay Singh
2018-09-19  6:05 ` [PATCH 27/29] staging: wilc1000: use usleep_range() in place of udelay() Ajay Singh
2018-09-19  6:05 ` [PATCH 28/29] staging: wilc1000: avoid spaces preferred around checkpatch issue Ajay Singh
2018-09-19  6:05 ` [PATCH 29/29] staging: wilc1000: return exact error of register_netdev() from wilc_netdev_init() Ajay Singh
2018-09-19  9:41   ` Dan Carpenter
2018-09-19 11:04     ` Ajay Singh [this message]

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=20180919163440.2dfd185b@ajaysk-VirtualBox \
    --to=ajay.kathat@microchip.com \
    --cc=adham.abozaeid@microchip.com \
    --cc=aditya.shankar@microchip.com \
    --cc=dan.carpenter@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox