static int __init fsl_wakeup_sys_init(void)
 {
+       struct device *dev_root;
        int ret;
 
        fsl_wakeup = kzalloc(sizeof(struct fsl_mpic_timer_wakeup), GFP_KERNEL);
 
        INIT_WORK(&fsl_wakeup->free_work, fsl_free_resource);
 
-       ret = device_create_file(mpic_subsys.dev_root, &mpic_attributes);
-       if (ret)
-               kfree(fsl_wakeup);
+       dev_root = bus_get_dev_root(&mpic_subsys);
+       if (dev_root) {
+               ret = device_create_file(dev_root, &mpic_attributes);
+               put_device(dev_root);
+               if (ret)
+                       kfree(fsl_wakeup);
+       }
 
        return ret;
 }
 
 static void __exit fsl_wakeup_sys_exit(void)
 {
-       device_remove_file(mpic_subsys.dev_root, &mpic_attributes);
+       struct device *dev_root;
+
+       dev_root = bus_get_dev_root(&mpic_subsys);
+       if (dev_root) {
+               device_remove_file(dev_root, &mpic_attributes);
+               put_device(dev_root);
+       }
 
        mutex_lock(&sysfs_lock);