/*-------------------------------------------------------------------------*/
 
-static ssize_t composite_show_suspended(struct device *dev,
-                                       struct device_attribute *attr,
-                                       char *buf)
+static ssize_t suspended_show(struct device *dev, struct device_attribute *attr,
+                             char *buf)
 {
        struct usb_gadget *gadget = dev_to_usb_gadget(dev);
        struct usb_composite_dev *cdev = get_gadget_data(gadget);
 
        return sprintf(buf, "%d\n", cdev->suspended);
 }
-
-static DEVICE_ATTR(suspended, 0444, composite_show_suspended, NULL);
+static DEVICE_ATTR_RO(suspended);
 
 static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
 {
 
 /*-------------------------------------------------------------------------*/
 
 /* "function" sysfs attribute */
-static ssize_t show_function(struct device *dev, struct device_attribute *attr,
+static ssize_t function_show(struct device *dev, struct device_attribute *attr,
                char *buf)
 {
        struct dummy    *dum = gadget_dev_to_dummy(dev);
                return 0;
        return scnprintf(buf, PAGE_SIZE, "%s\n", dum->driver->function);
 }
-static DEVICE_ATTR(function, S_IRUGO, show_function, NULL);
+static DEVICE_ATTR_RO(function);
 
 /*-------------------------------------------------------------------------*/
 
                urb->actual_length, urb->transfer_buffer_length);
 }
 
-static ssize_t show_urbs(struct device *dev, struct device_attribute *attr,
+static ssize_t urbs_show(struct device *dev, struct device_attribute *attr,
                char *buf)
 {
        struct usb_hcd          *hcd = dev_get_drvdata(dev);
 
        return size;
 }
-static DEVICE_ATTR(urbs, S_IRUGO, show_urbs, NULL);
+static DEVICE_ATTR_RO(urbs);
 
 static int dummy_start_ss(struct dummy_hcd *dum_hcd)
 {
 
 
 /*************************** DEVICE ATTRIBUTES ***************************/
 
-static DEVICE_ATTR(ro, 0644, fsg_show_ro, fsg_store_ro);
-static DEVICE_ATTR(nofua, 0644, fsg_show_nofua, fsg_store_nofua);
-static DEVICE_ATTR(file, 0644, fsg_show_file, fsg_store_file);
-
-static struct device_attribute dev_attr_ro_cdrom =
-       __ATTR(ro, 0444, fsg_show_ro, NULL);
-static struct device_attribute dev_attr_file_nonremovable =
-       __ATTR(file, 0444, fsg_show_file, NULL);
+static DEVICE_ATTR_RW(ro);
+static DEVICE_ATTR_RW(nofua);
+static DEVICE_ATTR_RW(file);
+
+static struct device_attribute dev_attr_ro_cdrom = __ATTR_RO(ro);
+static struct device_attribute dev_attr_file_nonremovable = __ATTR_RO(file);
 
 
 /****************************** FSG COMMON ******************************/
 
 /*---------------------------------------------------------------------------*/
 
 static ssize_t
-net2272_show_registers(struct device *_dev, struct device_attribute *attr, char *buf)
+registers_show(struct device *_dev, struct device_attribute *attr, char *buf)
 {
        struct net2272 *dev;
        char *next;
 
        return PAGE_SIZE - size;
 }
-static DEVICE_ATTR(registers, S_IRUGO, net2272_show_registers, NULL);
+static DEVICE_ATTR_RO(registers);
 
 /*---------------------------------------------------------------------------*/
 
 
  */
 
 /* "function" sysfs attribute */
-static ssize_t
-show_function (struct device *_dev, struct device_attribute *attr, char *buf)
+static ssize_t function_show(struct device *_dev, struct device_attribute *attr,
+                            char *buf)
 {
        struct net2280  *dev = dev_get_drvdata (_dev);
 
                return 0;
        return scnprintf (buf, PAGE_SIZE, "%s\n", dev->driver->function);
 }
-static DEVICE_ATTR (function, S_IRUGO, show_function, NULL);
+static DEVICE_ATTR_RO(function);
 
-static ssize_t net2280_show_registers(struct device *_dev,
-                               struct device_attribute *attr, char *buf)
+static ssize_t registers_show(struct device *_dev,
+                             struct device_attribute *attr, char *buf)
 {
        struct net2280          *dev;
        char                    *next;
 
        return PAGE_SIZE - size;
 }
-static DEVICE_ATTR(registers, S_IRUGO, net2280_show_registers, NULL);
+static DEVICE_ATTR_RO(registers);
 
-static ssize_t
-show_queues (struct device *_dev, struct device_attribute *attr, char *buf)
+static ssize_t queues_show(struct device *_dev, struct device_attribute *attr,
+                          char *buf)
 {
        struct net2280          *dev;
        char                    *next;
        spin_unlock_irqrestore (&dev->lock, flags);
        return PAGE_SIZE - size;
 }
-static DEVICE_ATTR (queues, S_IRUGO, show_queues, NULL);
+static DEVICE_ATTR_RO(queues);
 
 
 #else
 
 /*-------------------------------------------------------------------------*/
 
 
-static ssize_t fsg_show_ro(struct device *dev, struct device_attribute *attr,
-                          char *buf)
+static ssize_t ro_show(struct device *dev, struct device_attribute *attr,
+                      char *buf)
 {
        struct fsg_lun  *curlun = fsg_lun_from_dev(dev);
 
                                  : curlun->initially_ro);
 }
 
-static ssize_t fsg_show_nofua(struct device *dev, struct device_attribute *attr,
-                             char *buf)
+static ssize_t nofua_show(struct device *dev, struct device_attribute *attr,
+                         char *buf)
 {
        struct fsg_lun  *curlun = fsg_lun_from_dev(dev);
 
        return sprintf(buf, "%u\n", curlun->nofua);
 }
 
-static ssize_t fsg_show_file(struct device *dev, struct device_attribute *attr,
-                            char *buf)
+static ssize_t file_show(struct device *dev, struct device_attribute *attr,
+                        char *buf)
 {
        struct fsg_lun  *curlun = fsg_lun_from_dev(dev);
        struct rw_semaphore     *filesem = dev_get_drvdata(dev);
 }
 
 
-static ssize_t fsg_store_ro(struct device *dev, struct device_attribute *attr,
-                           const char *buf, size_t count)
+static ssize_t ro_store(struct device *dev, struct device_attribute *attr,
+                       const char *buf, size_t count)
 {
        ssize_t         rc;
        struct fsg_lun  *curlun = fsg_lun_from_dev(dev);
        return rc;
 }
 
-static ssize_t fsg_store_nofua(struct device *dev,
-                              struct device_attribute *attr,
-                              const char *buf, size_t count)
+static ssize_t nofua_store(struct device *dev, struct device_attribute *attr,
+                          const char *buf, size_t count)
 {
        struct fsg_lun  *curlun = fsg_lun_from_dev(dev);
        unsigned        nofua;
        return count;
 }
 
-static ssize_t fsg_store_file(struct device *dev, struct device_attribute *attr,
-                             const char *buf, size_t count)
+static ssize_t file_store(struct device *dev, struct device_attribute *attr,
+                         const char *buf, size_t count)
 {
        struct fsg_lun  *curlun = fsg_lun_from_dev(dev);
        struct rw_semaphore     *filesem = dev_get_drvdata(dev);
 
 }
 static DEVICE_ATTR(soft_connect, S_IWUSR, NULL, usb_udc_softconn_store);
 
-static ssize_t usb_gadget_state_show(struct device *dev,
-               struct device_attribute *attr, char *buf)
+static ssize_t state_show(struct device *dev, struct device_attribute *attr,
+                         char *buf)
 {
        struct usb_udc          *udc = container_of(dev, struct usb_udc, dev);
        struct usb_gadget       *gadget = udc->gadget;
 
        return sprintf(buf, "%s\n", usb_state_string(gadget->state));
 }
-static DEVICE_ATTR(state, S_IRUGO, usb_gadget_state_show, NULL);
+static DEVICE_ATTR_RO(state);
 
 #define USB_UDC_SPEED_ATTR(name, param)                                        \
-ssize_t usb_udc_##param##_show(struct device *dev,                     \
+ssize_t name##_show(struct device *dev,                                        \
                struct device_attribute *attr, char *buf)               \
 {                                                                      \
        struct usb_udc *udc = container_of(dev, struct usb_udc, dev);   \
        return snprintf(buf, PAGE_SIZE, "%s\n",                         \
                        usb_speed_string(udc->gadget->param));          \
 }                                                                      \
-static DEVICE_ATTR(name, S_IRUGO, usb_udc_##param##_show, NULL)
+static DEVICE_ATTR_RO(name)
 
 static USB_UDC_SPEED_ATTR(current_speed, speed);
 static USB_UDC_SPEED_ATTR(maximum_speed, max_speed);
 
 #define USB_UDC_ATTR(name)                                     \
-ssize_t usb_udc_##name##_show(struct device *dev,              \
+ssize_t name##_show(struct device *dev,                                \
                struct device_attribute *attr, char *buf)       \
 {                                                              \
        struct usb_udc          *udc = container_of(dev, struct usb_udc, dev); \
                                                                \
        return snprintf(buf, PAGE_SIZE, "%d\n", gadget->name);  \
 }                                                              \
-static DEVICE_ATTR(name, S_IRUGO, usb_udc_##name##_show, NULL)
+static DEVICE_ATTR_RO(name)
 
 static USB_UDC_ATTR(is_otg);
 static USB_UDC_ATTR(is_a_peripheral);