There is a memory leak of device driver queue resources that can occur
if iflib_device_register fails. This happens because we do not call
IFDI_QUEUES_FREE properly when cleaning up. This can be somewhat
confusing, as the memory leak checks will blame the malloc types related
to the device driver for this.
iflib_qset_structures_setup currently attempts to cleanup after itself
if iflib_rx_structures_setup fails, but not if iflib_tx_structures_setup
does.
Additionally, if any other function in iflib_device_register fails after
iflib_qset_structures_setup completes, we won't free the queues either.
Fix this by moving this cleanup code from within iflib_qset_structures_setup
directly into the fail_queues label of iflib_device_register.