lguest: do not statically allocate root device
PATCH 1/2 lguest: do not statically allocate root device
Apparently we shouldn't be statically allocating the root device object, so dynamically allocate it instead.
Signed-off-by Mark McLoughlin <[email protected]>
--- drivers/lguest/lguest_device.c | 44 ++++++++++++++++++++++++++++++++++----- 1 files changed, 38 insertions(+), 6 deletions(-)
drivers/lguest/lguest_device.c +38 -6
@@ -321,10 +321,42 @@ static struct virtio_config_ops lguest_config_ops = {/* The root device for the lguest virtio devices. This makes them appear as * /sys/devices/lguest/0,1,2 not /sys/devices/0,1,2. */ -static struct device lguest_root = { - .parent =NULL , - .bus_id ="lguest" , -}; +static struct device *lguest_root; + +static void lguest_release_root (struct device *root) +{ +kfree (root); +} + +static int lguest_init_root (void ) +{ +struct device *root; +int err = -ENOMEM ; + + root =kzalloc (sizeof (struct device ),GFP_KERNEL ); +if (root ==NULL ) + goto out; + + err =dev_set_name (root,"lguest" ); +if (err) + goto free_root; + + err =device_register (root); +if (err) + goto free_root; + + root->parent =NULL ; + root->release = lguest_release_root; + + lguest_root = root; + +return 0 ; + +free_root: +kfree (root); +out: +return err; +}/*D:120 This is the core of the lguest bus: actually adding a new device. * It's a separate function because it's neater that way, and because an
@@ -351,7 +383,7 @@ static void add_lguest_device(struct lguest_device_desc *d, }/* This devices' parent is the lguest/ dir. */ - ldev->vdev.dev.parent = &lguest_root; + ldev->vdev.dev.parent = lguest_root;/* We have a unique device index thanks to the dev_index counter. */ ldev->vdev.id.device = d->type;/* We have a simple set of routines for querying the device's
@@ -407,7 +439,7 @@ static int __init lguest_devices_init(void)if (strcmp (pv_info.name,"lguest" ) !=0 )return 0 ; -if (device_register (&lguest_root) !=0 ) +if (lguest_init_root () !=0 )panic ("Could not register lguest root" );/* Devices are in a single page above top of "normal" mem */
Signature · 1 line
1.5.4.3
PATCH 2/2 lguest: struct device - replace bus_id with dev_name()
bus_id is gradually being removed, so use dev_name() instead.
Signed-off-by Mark McLoughlin <[email protected]>
Cc Kay Sievers <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
--- drivers/lguest/lguest_device.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/lguest/lguest_device.c +1 -1
@@ -272,7 +272,7 @@ static struct virtqueue *lg_find_vq(struct virtio_device *vdev,* the interrupt as a source of randomness: it'd be nice to have that * back.. */ err =request_irq (lvq->config.irq, vring_interrupt,IRQF_SHARED , - vdev->dev.bus_id, vq); +dev_name (&vdev->dev), vq);if (err) goto destroy_vring;
Signature · 1 line
1.5.4.3