From: Simon Horman <horms@kernel.org>
To: Haiyang Zhang <haiyangz@microsoft.com>
Cc: linux-hyperv@vger.kernel.org, netdev@vger.kernel.org,
kys@microsoft.com, wei.liu@kernel.org, decui@microsoft.com,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
davem@davemloft.net, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH net,v4, 2/3] hv_netvsc: Fix race of register_netdevice_notifier and VF register
Date: Sun, 12 Nov 2023 09:41:15 +0000 [thread overview]
Message-ID: <20231112094115.GE705326@kernel.org> (raw)
In-Reply-To: <1699627140-28003-3-git-send-email-haiyangz@microsoft.com>
On Fri, Nov 10, 2023 at 06:38:59AM -0800, Haiyang Zhang wrote:
> If VF NIC is registered earlier, NETDEV_REGISTER event is replayed,
> but NETDEV_POST_INIT is not.
>
> Move register_netdevice_notifier() earlier, so the call back
> function is set before probing.
>
> Cc: stable@vger.kernel.org
> Fixes: e04e7a7bbd4b ("hv_netvsc: Fix a deadlock by getting rtnl lock earlier in netvsc_probe()")
> Reported-by: Dexuan Cui <decui@microsoft.com>
> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
> Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
>
> ---
> v3:
> Divide it into two patches, suggested by Jakub Kicinski.
> v2:
> Fix rtnl_unlock() in error handling as found by Wojciech Drewek.
> ---
> drivers/net/hyperv/netvsc_drv.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
> index 5e528a76f5f5..1d1491da303b 100644
> --- a/drivers/net/hyperv/netvsc_drv.c
> +++ b/drivers/net/hyperv/netvsc_drv.c
> @@ -2793,11 +2793,14 @@ static int __init netvsc_drv_init(void)
> }
> netvsc_ring_bytes = ring_size * PAGE_SIZE;
>
> + register_netdevice_notifier(&netvsc_netdev_notifier);
> +
> ret = vmbus_driver_register(&netvsc_drv);
> - if (ret)
> + if (ret) {
> + unregister_netdevice_notifier(&netvsc_netdev_notifier);
> return ret;
> + }
>
> - register_netdevice_notifier(&netvsc_netdev_notifier);
> return 0;
> }
Hi Haiyang Zhang,
functionally this change looks good to me, thanks!
I'm wondering if we could improve things slightly by using a more idiomatic
form for the error path. Something like the following (completely untested!).
My reasoning is that this way things are less likely go to wrong if more
error conditions are added to this function later.
...
register_netdevice_notifier(&netvsc_netdev_notifier);
ret = vmbus_driver_register(&netvsc_drv);
if (ret)
goto err_unregister_netdevice_notifier;
return 0;
err_unregister_netdevice_notifier:
unregister_netdevice_notifier(&netvsc_netdev_notifier);
return ret;
}
next prev parent reply other threads:[~2023-11-12 9:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-10 14:38 [PATCH net,v4, 0/3] hv_netvsc: fix race of netvsc, VF register, and slave bit Haiyang Zhang
2023-11-10 14:38 ` [PATCH net,v4, 1/3] hv_netvsc: fix race of netvsc and VF register_netdevice Haiyang Zhang
2023-11-12 9:45 ` Simon Horman
2023-11-13 2:47 ` Dexuan Cui
2023-11-10 14:38 ` [PATCH net,v4, 2/3] hv_netvsc: Fix race of register_netdevice_notifier and VF register Haiyang Zhang
2023-11-12 9:41 ` Simon Horman [this message]
2023-11-13 15:55 ` Haiyang Zhang
2023-11-13 2:55 ` Dexuan Cui
2023-11-10 14:39 ` [PATCH net,v4, 3/3] hv_netvsc: Mark VF as slave before exposing it to user-mode Haiyang Zhang
2023-11-15 23:52 ` Stephen Hemminger
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=20231112094115.GE705326@kernel.org \
--to=horms@kernel.org \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=edumazet@google.com \
--cc=haiyangz@microsoft.com \
--cc=kuba@kernel.org \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@vger.kernel.org \
--cc=wei.liu@kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).