error = microcode_dev_init();
        if (error)
-               goto out_sysdev_driver;
 -              return error;
++              goto out_driver;
  
        register_syscore_ops(&mc_syscore_ops);
        register_hotcpu_notifier(&mc_cpu_notifier);
                " <tigran@aivazian.fsnet.co.uk>, Peter Oruba\n");
  
        return 0;
- out_sysdev_driver:
 +
-       sysdev_driver_unregister(&cpu_sysdev_class, &mc_sysdev_driver);
++out_driver:
 +      get_online_cpus();
 +      mutex_lock(µcode_mutex);
 +
++      subsys_interface_unregister(&mc_cpu_interface);
 +
 +      mutex_unlock(µcode_mutex);
 +      put_online_cpus();
 +
 +out_pdev:
 +      platform_device_unregister(microcode_pdev);
 +      return error;
 +
  }
  module_init(microcode_init);