Ensure hooks set if accelerator loads before first network interface diff -r 7f386cf89345 drivers/xen/netfront/accel.c --- a/drivers/xen/netfront/accel.c Fri Oct 26 13:56:56 2007 +0100 +++ b/drivers/xen/netfront/accel.c Fri Oct 26 13:58:14 2007 +0100 @@ -131,7 +131,8 @@ static void add_accelerator_vif(struct n * Initialise the state to track an accelerator plugin module. */ static int init_accelerator(const char *frontend, - struct netfront_accelerator **result) + struct netfront_accelerator **result, + struct netfront_accel_hooks *hooks) { struct netfront_accelerator *accelerator = kmalloc(sizeof(struct netfront_accelerator), GFP_KERNEL); @@ -154,7 +155,7 @@ static int init_accelerator(const char * INIT_LIST_HEAD(&accelerator->vif_states); spin_lock_init(&accelerator->vif_states_lock); - accelerator->hooks = NULL; + accelerator->hooks = hooks; accelerator->ready_for_probe = 1; accelerator->need_probe = NULL; @@ -278,7 +279,7 @@ int netfront_load_accelerator(struct net } /* Couldn't find it, so create a new one and load the module */ - if ((rc = init_accelerator(frontend, &accelerator)) < 0) { + if ((rc = init_accelerator(frontend, &accelerator, NULL)) < 0) { spin_unlock_irqrestore(&accelerators_lock, flags); return rc; } @@ -450,7 +451,7 @@ int netfront_accelerator_loaded(int vers DPRINTK("Couldn't find matching accelerator (%s)\n", frontend); - init_accelerator(frontend, &accelerator); + init_accelerator(frontend, &accelerator, hooks); spin_unlock_irqrestore(&accelerators_lock, flags);