drivers/xen/xenbus/xenbus_probe.c          | 24 ++++++++++++++++++------
  drivers/xen/xenbus/xenbus_probe.h          |  2 +-
  drivers/xen/xenbus/xenbus_probe_backend.c  |  2 +-
  drivers/xen/xenbus/xenbus_probe_frontend.c |  2 +-
  4 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/drivers/xen/xenbus/xenbus_probe.c 
b/drivers/xen/xenbus/xenbus_probe.c
index 38e92b7..3c0a74b 100644
--- a/drivers/xen/xenbus/xenbus_probe.c
+++ b/drivers/xen/xenbus/xenbus_probe.c
@@ -384,12 +384,14 @@ static ssize_t nodename_show(struct device *dev,
  {
        return sprintf(buf, "%s\n", to_xenbus_device(dev)->nodename);
  }
+static DEVICE_ATTR_RO(nodename);
  
  static ssize_t devtype_show(struct device *dev,
                            struct device_attribute *attr, char *buf)
  {
        return sprintf(buf, "%s\n", to_xenbus_device(dev)->devicetype);
  }
+static DEVICE_ATTR_RO(devtype);
  
  static ssize_t modalias_show(struct device *dev,
                             struct device_attribute *attr, char *buf)
@@ -397,14 +399,24 @@ static ssize_t modalias_show(struct device *dev,
        return sprintf(buf, "%s:%s\n", dev->bus->name,
                       to_xenbus_device(dev)->devicetype);
  }
+static DEVICE_ATTR_RO(modalias);
  
-struct device_attribute xenbus_dev_attrs[] = {
-       __ATTR_RO(nodename),
-       __ATTR_RO(devtype),
-       __ATTR_RO(modalias),
-       __ATTR_NULL
+static struct attribute *xenbus_dev_attrs[] = {
+       &dev_attr_nodename.attr,
+       &dev_attr_devtype.attr,
+       &dev_attr_modalias.attr,
+       NULL,
  };
-EXPORT_SYMBOL_GPL(xenbus_dev_attrs);
+
+static const struct attribute_group xenbus_dev_group = {
+       .attrs = xenbus_dev_attrs,
+};
+
+const struct attribute_group *xenbus_dev_groups[] = {
+       &xenbus_dev_group,
+       NULL,
+};
+EXPORT_SYMBOL_GPL(xenbus_dev_groups);
  
  int xenbus_probe_node(struct xen_bus_type *bus,
                      const char *type,
diff --git a/drivers/xen/xenbus/xenbus_probe.h 
b/drivers/xen/xenbus/xenbus_probe.h
index 146f857..1085ec2 100644
--- a/drivers/xen/xenbus/xenbus_probe.h
+++ b/drivers/xen/xenbus/xenbus_probe.h
@@ -54,7 +54,7 @@ enum xenstore_init {
        XS_LOCAL,
  };
  
-extern struct device_attribute xenbus_dev_attrs[];
+extern const struct attribute_group *xenbus_dev_groups[];
  
  extern int xenbus_match(struct device *_dev, struct device_driver *_drv);
  extern int xenbus_dev_probe(struct device *_dev);
diff --git a/drivers/xen/xenbus/xenbus_probe_backend.c 
b/drivers/xen/xenbus/xenbus_probe_backend.c
index 998bbba..5125dce 100644
--- a/drivers/xen/xenbus/xenbus_probe_backend.c
+++ b/drivers/xen/xenbus/xenbus_probe_backend.c
@@ -200,7 +200,7 @@ static struct xen_bus_type xenbus_backend = {
                .probe          = xenbus_dev_probe,
                .remove         = xenbus_dev_remove,
                .shutdown       = xenbus_dev_shutdown,
-               .dev_attrs      = xenbus_dev_attrs,
+               .dev_groups     = xenbus_dev_groups,
        },
  };
  
diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c b/drivers/xen/xenbus/xenbus_probe_frontend.c
index 34b20bf..129bf84 100644
--- a/drivers/xen/xenbus/xenbus_probe_frontend.c
+++ b/drivers/xen/xenbus/xenbus_probe_frontend.c
@@ -154,7 +154,7 @@ static struct xen_bus_type xenbus_frontend = {
                .probe          = xenbus_frontend_dev_probe,
                .remove         = xenbus_dev_remove,
                .shutdown       = xenbus_dev_shutdown,
-               .dev_attrs      = xenbus_dev_attrs,
+               .dev_groups     = xenbus_dev_groups,
  
  		.pm		= &xenbus_pm_ops,
        },