• Ross Lagerwall's avatar
    xen-netfront: Improve error handling during initialization · e2e004ac
    Ross Lagerwall authored
    This fixes a crash when running out of grant refs when creating many
    queues across many netdevs.
    
    * If creating queues fails (i.e. there are no grant refs available),
    call xenbus_dev_fatal() to ensure that the xenbus device is set to the
    closed state.
    * If no queues are created, don't call xennet_disconnect_backend as
    netdev->real_num_tx_queues will not have been set correctly.
    * If setup_netfront() fails, ensure that all the queues created are
    cleaned up, not just those that have been set up.
    * If any queues were set up and an error occurs, call
    xennet_destroy_queues() to clean up the napi context.
    * If any fatal error occurs, unregister and destroy the netdev to avoid
    leaving around a half setup network device.
    Signed-off-by: default avatarRoss Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e2e004ac
xen-netfront.c 53.9 KB