netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] net: netdevsim: don't try to destroy PHC on VFs
@ 2024-01-16 19:14 Jakub Kicinski
  2024-01-17  9:15 ` Simon Horman
  2024-01-17 11:00 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 3+ messages in thread
From: Jakub Kicinski @ 2024-01-16 19:14 UTC (permalink / raw)
  To: davem; +Cc: netdev, edumazet, pabeni, Jakub Kicinski, vladimir.oltean

PHC gets initialized in nsim_init_netdevsim(), which
is only called if (nsim_dev_port_is_pf()).

Create a counterpart of nsim_init_netdevsim() and
move the mock_phc_destroy() there.

This fixes a crash trying to destroy netdevsim with
VFs instantiated, as caught by running the devlink.sh test:

    BUG: kernel NULL pointer dereference, address: 00000000000000b8
    RIP: 0010:mock_phc_destroy+0xd/0x30
    Call Trace:
     <TASK>
     nsim_destroy+0x4a/0x70 [netdevsim]
     __nsim_dev_port_del+0x47/0x70 [netdevsim]
     nsim_dev_reload_destroy+0x105/0x120 [netdevsim]
     nsim_drv_remove+0x2f/0xb0 [netdevsim]
     device_release_driver_internal+0x1a1/0x210
     bus_remove_device+0xd5/0x120
     device_del+0x159/0x490
     device_unregister+0x12/0x30
     del_device_store+0x11a/0x1a0 [netdevsim]
     kernfs_fop_write_iter+0x130/0x1d0
     vfs_write+0x30b/0x4b0
     ksys_write+0x69/0xf0
     do_syscall_64+0xcc/0x1e0
     entry_SYSCALL_64_after_hwframe+0x6f/0x77

Fixes: b63e78fca889 ("net: netdevsim: use mock PHC driver")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: vladimir.oltean@nxp.com
---
 drivers/net/netdevsim/netdev.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c
index aecaf5f44374..77e8250282a5 100644
--- a/drivers/net/netdevsim/netdev.c
+++ b/drivers/net/netdevsim/netdev.c
@@ -369,6 +369,12 @@ static int nsim_init_netdevsim_vf(struct netdevsim *ns)
 	return err;
 }
 
+static void nsim_exit_netdevsim(struct netdevsim *ns)
+{
+	nsim_udp_tunnels_info_destroy(ns->netdev);
+	mock_phc_destroy(ns->phc);
+}
+
 struct netdevsim *
 nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port)
 {
@@ -417,8 +423,7 @@ void nsim_destroy(struct netdevsim *ns)
 	}
 	rtnl_unlock();
 	if (nsim_dev_port_is_pf(ns->nsim_dev_port))
-		nsim_udp_tunnels_info_destroy(dev);
-	mock_phc_destroy(ns->phc);
+		nsim_exit_netdevsim(ns);
 	free_netdev(dev);
 }
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH net] net: netdevsim: don't try to destroy PHC on VFs
  2024-01-16 19:14 [PATCH net] net: netdevsim: don't try to destroy PHC on VFs Jakub Kicinski
@ 2024-01-17  9:15 ` Simon Horman
  2024-01-17 11:00 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: Simon Horman @ 2024-01-17  9:15 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, edumazet, pabeni, vladimir.oltean

On Tue, Jan 16, 2024 at 11:14:00AM -0800, Jakub Kicinski wrote:
> PHC gets initialized in nsim_init_netdevsim(), which
> is only called if (nsim_dev_port_is_pf()).
> 
> Create a counterpart of nsim_init_netdevsim() and
> move the mock_phc_destroy() there.
> 
> This fixes a crash trying to destroy netdevsim with
> VFs instantiated, as caught by running the devlink.sh test:
> 
>     BUG: kernel NULL pointer dereference, address: 00000000000000b8
>     RIP: 0010:mock_phc_destroy+0xd/0x30
>     Call Trace:
>      <TASK>
>      nsim_destroy+0x4a/0x70 [netdevsim]
>      __nsim_dev_port_del+0x47/0x70 [netdevsim]
>      nsim_dev_reload_destroy+0x105/0x120 [netdevsim]
>      nsim_drv_remove+0x2f/0xb0 [netdevsim]
>      device_release_driver_internal+0x1a1/0x210
>      bus_remove_device+0xd5/0x120
>      device_del+0x159/0x490
>      device_unregister+0x12/0x30
>      del_device_store+0x11a/0x1a0 [netdevsim]
>      kernfs_fop_write_iter+0x130/0x1d0
>      vfs_write+0x30b/0x4b0
>      ksys_write+0x69/0xf0
>      do_syscall_64+0xcc/0x1e0
>      entry_SYSCALL_64_after_hwframe+0x6f/0x77
> 
> Fixes: b63e78fca889 ("net: netdevsim: use mock PHC driver")
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net] net: netdevsim: don't try to destroy PHC on VFs
  2024-01-16 19:14 [PATCH net] net: netdevsim: don't try to destroy PHC on VFs Jakub Kicinski
  2024-01-17  9:15 ` Simon Horman
@ 2024-01-17 11:00 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-01-17 11:00 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: davem, netdev, edumazet, pabeni, vladimir.oltean

Hello:

This patch was applied to netdev/net.git (main)
by David S. Miller <davem@davemloft.net>:

On Tue, 16 Jan 2024 11:14:00 -0800 you wrote:
> PHC gets initialized in nsim_init_netdevsim(), which
> is only called if (nsim_dev_port_is_pf()).
> 
> Create a counterpart of nsim_init_netdevsim() and
> move the mock_phc_destroy() there.
> 
> This fixes a crash trying to destroy netdevsim with
> VFs instantiated, as caught by running the devlink.sh test:
> 
> [...]

Here is the summary with links:
  - [net] net: netdevsim: don't try to destroy PHC on VFs
    https://git.kernel.org/netdev/net/c/ea937f772083

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-01-17 11:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-16 19:14 [PATCH net] net: netdevsim: don't try to destroy PHC on VFs Jakub Kicinski
2024-01-17  9:15 ` Simon Horman
2024-01-17 11:00 ` patchwork-bot+netdevbpf

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).