• Jakub Kicinski's avatar
    net: netdevsim: don't try to destroy PHC on VFs · ea937f77
    Jakub Kicinski authored
    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: b63e78fc ("net: netdevsim: use mock PHC driver")
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ea937f77
netdev.c 11.2 KB