From: Chris Lalancette <clalance@redhat.com> Date: Thu, 17 Jul 2008 17:28:18 +0200 Subject: [xen] blktap: stats error cleanup Message-id: 487F6512.20303@redhat.com O-Subject: [RHEL5.3 PATCH 3/7]: Blktap stats error cleanup v2 Bugzilla: 250104 RH-Acked-by: Stephen Tweedie <sct@redhat.com> RH-Acked-by: Bill Burns <bburns@redhat.com> RH-Acked-by: Don Dutile <ddutile@redhat.com> A simple patch to cleanup blktap statistics properly if we hit an error condition. From xen-3.1-testing.hg c/s 14044 diff --git a/drivers/xen/blktap/xenbus.c b/drivers/xen/blktap/xenbus.c index 526ce05..a9a9c2b 100644 --- a/drivers/xen/blktap/xenbus.c +++ b/drivers/xen/blktap/xenbus.c @@ -47,6 +47,7 @@ struct backend_info blkif_t *blkif; struct xenbus_watch backend_watch; int xenbus_id; + int group_added; }; @@ -150,7 +151,12 @@ static struct attribute_group tapstat_group = { int xentap_sysfs_addif(struct xenbus_device *dev) { - return sysfs_create_group(&dev->dev.kobj, &tapstat_group); + int err; + struct backend_info *be = dev->dev.driver_data; + err = sysfs_create_group(&dev->dev.kobj, &tapstat_group); + if (!err) + be->group_added = 1; + return err; } void xentap_sysfs_delif(struct xenbus_device *dev) @@ -174,7 +180,8 @@ static int blktap_remove(struct xenbus_device *dev) tap_blkif_free(be->blkif); be->blkif = NULL; } - xentap_sysfs_delif(be->dev); + if (be->group_added) + xentap_sysfs_delif(be->dev); kfree(be); dev->dev.driver_data = NULL; return 0;