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
prev parent 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 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.