On Fri, May 29, 2015 at 05:24:53PM +0100, Ian Campbell wrote: [...] > if (be->vif != NULL) > return 0; > @@ -417,12 +409,23 @@ static int backend_create_xenvif(struct backend_info > *be) > return (err < 0) ? err : -EINVAL; > } > > + script = xenbus_read(XBT_NIL, dev->nodename, "script", NULL); > + if (IS_ERR(script)) { > + int err = PTR_ERR(script); > + xenbus_dev_fatal(dev, err, "reading script"); > + return err; > + } > + > vif = xenvif_alloc(&dev->dev, dev->otherend_id, handle); > if (IS_ERR(vif)) { > err = PTR_ERR(vif); > xenbus_dev_fatal(dev, err, "creating interface"); > + kfree(script); > return err; > } > + > + vif->hotplug_script = script; > +
IMO it's better we make xenvif_alloc accept a new parameter called "script" then allocate vif->hotplug_script there. Then free vif->hotplug_script in xenvif_free. This way it's less error prone because all memory allocated for vif is managed in proper place - xenvif_alloc and xenvif_free. Wei. > be->vif = vif; > > kobject_uevent(&dev->dev.kobj, KOBJ_ONLINE); > -- > 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel