xen-netfront: Improve error handling during initialization
authorRoss Lagerwall <ross.lagerwall@citrix.com>
Wed, 8 Feb 2017 10:57:37 +0000 (10:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Feb 2017 21:43:01 +0000 (16:43 -0500)
commite2e004acc7cbe3c531e752a270a74e95cde3ea48
tree1a1644a3498b13ff364b7a738f736a153ef4c3eb
parent1b5805c29c7fffc569b749c760b2bafce925df87
xen-netfront: Improve error handling during initialization

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: Ross Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netfront.c