[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] Netfront accelerator bug fix
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1195835216 0 # Node ID fd879c0688bf123a85dcfa371f863da3542ab8af # Parent a9f723af5e187da97efe374ffd5b7ca8cf493a36 Netfront accelerator bug fix In testing Xen for the upcoming 3.2.0 release, we've found a bug in the netfront accelerator support where if an accelerator was removed before it had properly initialised it wasn't handled correctly. Signed-off-by: Kieran Mansley <kmansley@xxxxxxxxxxxxxx> --- drivers/xen/netfront/accel.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff -r a9f723af5e18 -r fd879c0688bf drivers/xen/netfront/accel.c --- a/drivers/xen/netfront/accel.c Thu Nov 22 14:28:31 2007 +0000 +++ b/drivers/xen/netfront/accel.c Fri Nov 23 16:26:56 2007 +0000 @@ -465,15 +465,18 @@ static void accelerator_remove_hooks(str link) { spin_lock_irqsave(&accelerator->vif_states_lock, flags); - BUG_ON(vif_state->hooks == NULL); - hooks = vif_state->hooks; - accelerator_remove_single_hook(accelerator, vif_state); + if(vif_state->hooks) { + hooks = vif_state->hooks; + accelerator_remove_single_hook(accelerator, vif_state); + + /* Last chance to get statistics from the accelerator */ + hooks->get_stats(vif_state->np->netdev, + &vif_state->np->stats); + } spin_unlock_irqrestore(&accelerator->vif_states_lock, flags); - /* Last chance to get statistics from the accelerator */ - hooks->get_stats(vif_state->np->netdev, &vif_state->np->stats); - hooks->remove(vif_state->dev); + accelerator->hooks->remove(vif_state->dev); } accelerator->hooks = NULL; @@ -530,15 +533,16 @@ static int do_remove(struct netfront_inf /* Last chance to get statistics from the accelerator */ hooks->get_stats(np->netdev, &np->stats); - + } + + if (accelerator->hooks) { spin_unlock_irqrestore(&accelerator->vif_states_lock, *lock_flags); - rc = hooks->remove(dev); + rc = accelerator->hooks->remove(dev); spin_lock_irqsave(&accelerator->vif_states_lock, *lock_flags); } - return rc; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |