aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/xen/mcelog.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/xen/mcelog.c b/drivers/xen/mcelog.c
index 6ab6a79c38a5..a493c7315e94 100644
--- a/drivers/xen/mcelog.c
+++ b/drivers/xen/mcelog.c
@@ -393,14 +393,25 @@ static int bind_virq_for_mce(void)
393 393
394static int __init xen_late_init_mcelog(void) 394static int __init xen_late_init_mcelog(void)
395{ 395{
396 int ret;
397
396 /* Only DOM0 is responsible for MCE logging */ 398 /* Only DOM0 is responsible for MCE logging */
397 if (xen_initial_domain()) { 399 if (!xen_initial_domain())
398 /* register character device /dev/mcelog for xen mcelog */ 400 return -ENODEV;
399 if (misc_register(&xen_mce_chrdev_device)) 401
400 return -ENODEV; 402 /* register character device /dev/mcelog for xen mcelog */
401 return bind_virq_for_mce(); 403 ret = misc_register(&xen_mce_chrdev_device);
402 } 404 if (ret)
405 return ret;
406
407 ret = bind_virq_for_mce();
408 if (ret)
409 goto deregister;
403 410
404 return -ENODEV; 411 return 0;
412
413deregister:
414 misc_deregister(&xen_mce_chrdev_device);
415 return ret;
405} 416}
406device_initcall(xen_late_init_mcelog); 417device_initcall(xen_late_init_mcelog);