diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/oprofile/nmi_int.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c index f6b48f6c5951..73a41d3c6c09 100644 --- a/arch/x86/oprofile/nmi_int.c +++ b/arch/x86/oprofile/nmi_int.c | |||
@@ -568,8 +568,13 @@ static int __init init_sysfs(void) | |||
568 | int error; | 568 | int error; |
569 | 569 | ||
570 | error = sysdev_class_register(&oprofile_sysclass); | 570 | error = sysdev_class_register(&oprofile_sysclass); |
571 | if (!error) | 571 | if (error) |
572 | error = sysdev_register(&device_oprofile); | 572 | return error; |
573 | |||
574 | error = sysdev_register(&device_oprofile); | ||
575 | if (error) | ||
576 | sysdev_class_unregister(&oprofile_sysclass); | ||
577 | |||
573 | return error; | 578 | return error; |
574 | } | 579 | } |
575 | 580 | ||
@@ -695,6 +700,8 @@ int __init op_nmi_init(struct oprofile_operations *ops) | |||
695 | char *cpu_type = NULL; | 700 | char *cpu_type = NULL; |
696 | int ret = 0; | 701 | int ret = 0; |
697 | 702 | ||
703 | using_nmi = 0; | ||
704 | |||
698 | if (!cpu_has_apic) | 705 | if (!cpu_has_apic) |
699 | return -ENODEV; | 706 | return -ENODEV; |
700 | 707 | ||
@@ -774,7 +781,10 @@ int __init op_nmi_init(struct oprofile_operations *ops) | |||
774 | 781 | ||
775 | mux_init(ops); | 782 | mux_init(ops); |
776 | 783 | ||
777 | init_sysfs(); | 784 | ret = init_sysfs(); |
785 | if (ret) | ||
786 | return ret; | ||
787 | |||
778 | using_nmi = 1; | 788 | using_nmi = 1; |
779 | printk(KERN_INFO "oprofile: using NMI interrupt.\n"); | 789 | printk(KERN_INFO "oprofile: using NMI interrupt.\n"); |
780 | return 0; | 790 | return 0; |