}
 static DEVICE_ATTR(resource, S_IRUGO, dio_show_resource, NULL);
 
-void dio_create_sysfs_dev_files(struct dio_dev *d)
+int dio_create_sysfs_dev_files(struct dio_dev *d)
 {
        struct device *dev = &d->dev;
+       int error;
 
        /* current configuration's attributes */
-       device_create_file(dev, &dev_attr_id);
-       device_create_file(dev, &dev_attr_ipl);
-       device_create_file(dev, &dev_attr_secid);
-       device_create_file(dev, &dev_attr_name);
-       device_create_file(dev, &dev_attr_resource);
+       if ((error = device_create_file(dev, &dev_attr_id)) ||
+           (error = device_create_file(dev, &dev_attr_ipl)) ||
+           (error = device_create_file(dev, &dev_attr_secid)) ||
+           (error = device_create_file(dev, &dev_attr_name)) ||
+           (error = device_create_file(dev, &dev_attr_resource)))
+               return error;
+
+       return 0;
 }
 
 
        mm_segment_t fs;
        int i;
        struct dio_dev *dev;
+       int error;
 
        if (!MACH_IS_HP300)
                return 0;
        /* Initialize the DIO bus */ 
        INIT_LIST_HEAD(&dio_bus.devices);
        strcpy(dio_bus.dev.bus_id, "dio");
-       device_register(&dio_bus.dev);
+       error = device_register(&dio_bus.dev);
+       if (error) {
+               pr_err("DIO: Error registering dio_bus\n");
+               return error;
+       }
 
        /* Request all resources */
        dio_bus.num_resources = (hp300_model == HP_320 ? 1 : 2);
 
                if (scode >= DIOII_SCBASE)
                        iounmap(va);
-               device_register(&dev->dev);
-               dio_create_sysfs_dev_files(dev);
+               error = device_register(&dev->dev);
+               if (error) {
+                       pr_err("DIO: Error registering device %s\n",
+                              dev->name);
+                       continue;
+               }
+               error = dio_create_sysfs_dev_files(dev);
+               if (error)
+                       dev_err(&dev->dev, "Error creating sysfs files\n");
         }
        return 0;
 }
 
 
 extern int dio_find(int deviceid);
 extern unsigned long dio_scodetophysaddr(int scode);
-extern void dio_create_sysfs_dev_files(struct dio_dev *);
+extern int dio_create_sysfs_dev_files(struct dio_dev *);
 
 /* New-style probing */
 extern int dio_register_driver(struct dio_driver *);