[libvirt] [PATCH 2/2] bridge: don't crash on bandwidth unplug with no bandwidth
Michal Privoznik
mprivozn at redhat.com
Thu Jun 27 07:54:48 UTC 2013
On 21.06.2013 19:30, Ján Tomko wrote:
> If networkUnplugBandwidth is called on a network which has
> no bandwidth defined, print a warning instead of crashing.
>
> This can happen when destroying a domain with bandwith if
> bandwidth was removed from the network after the domain was
> started.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=975359
> ---
> src/network/bridge_driver.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index f7c2470..72a3f70 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c
> @@ -4808,6 +4808,11 @@ networkUnplugBandwidth(virNetworkObjPtr net,
>
> if (iface->data.network.actual &&
> iface->data.network.actual->class_id) {
> + if (!net->def->bandwidth || !net->def->bandwidth->in) {
> + VIR_WARN("Network %s has no bandwidth but unplug requested",
> + net->def->name);
> + goto cleanup;
> + }
> /* we must remove class from bridge */
> new_rate = net->def->bandwidth->in->average;
>
>
So the problem is, if user starts a domain with interface which has
@floor set. The @floor requires a bandwidth to be set on the network the
interface is to be plugged into. Then he destroys the network, clear
<bandwidth/> from the network definition and starts the network again. I
think this is the place which should be fixed. We should deny removing
<bandwidth/> in case there's at least one interface attached with
@floor. Similarly, we refuse to start domain if the corresponding
network doesn't have any <bandwidth/> configured.
Michal
More information about the libvir-list
mailing list