]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
parisc: Static initialization of spinlocks in perf and unwind code
authorHelge Deller <deller@gmx.de>
Fri, 4 Aug 2017 21:54:19 +0000 (23:54 +0200)
committerHelge Deller <deller@gmx.de>
Tue, 22 Aug 2017 14:34:33 +0000 (16:34 +0200)
While testing UBSAN I saw this BUG:
 BUG: spinlock bad magic on CPU#0, swapper/0
in unwind code. Let's avoid that by static initialization.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/perf.c
arch/parisc/kernel/unwind.c

index 6017a5af2e6e2c8feb45de54adfb36865b65d3ee..0813359049aec5347e7e239850808b9aa02f04a7 100644 (file)
@@ -69,7 +69,7 @@ struct rdr_tbl_ent {
 
 static int perf_processor_interface __read_mostly = UNKNOWN_INTF;
 static int perf_enabled __read_mostly;
-static spinlock_t perf_lock;
+static DEFINE_SPINLOCK(perf_lock);
 struct parisc_device *cpu_device __read_mostly;
 
 /* RDRs to write for PCX-W */
@@ -533,8 +533,6 @@ static int __init perf_init(void)
        /* Patch the images to match the system */
        perf_patch_images();
 
-       spin_lock_init(&perf_lock);
-
        /* TODO: this only lets us access the first cpu.. what to do for SMP? */
        cpu_device = per_cpu(cpu_data, 0).dev;
        printk("Performance monitoring counters enabled for %s\n",
index 1b73690477c5caf60c5b684389129e5f0bcb6c1c..48dc7d4d20bba5e6fdb8669ae6d03b3ed3cb27c4 100644 (file)
@@ -34,7 +34,7 @@
 extern struct unwind_table_entry __start___unwind[];
 extern struct unwind_table_entry __stop___unwind[];
 
-static spinlock_t unwind_lock;
+static DEFINE_SPINLOCK(unwind_lock);
 /*
  * the kernel unwind block is not dynamically allocated so that
  * we can call unwind_init as early in the bootup process as 
@@ -181,8 +181,6 @@ int __init unwind_init(void)
        start = (long)&__start___unwind[0];
        stop = (long)&__stop___unwind[0];
 
-       spin_lock_init(&unwind_lock);
-
        printk("unwind_init: start = 0x%lx, end = 0x%lx, entries = %lu\n", 
            start, stop,
            (stop - start) / sizeof(struct unwind_table_entry));