What is the concept of bust_spinlocks() In do_kernel_fault() function of ARM 64, we can see the following code
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/mm/fault.c?id=refs/tags/v3.19#n85 static void __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int esr, struct pt_regs *regs){ /* * Are we prepared to handle this kernel fault? */ if (fixup_exception(regs)) return; /* * No handler, we'll have to terminate things with extreme prejudice. */* bust_spinlocks(1);* pr_alert("Unable to handle kernel %s at virtual address %08lx\n", (addr < PAGE_SIZE) ? "NULL pointer dereference" : "paging request", addr); show_pte(mm, addr); die("Oops", regs, esr); bust_spinlocks(0); do_exit(SIGKILL);} I have looked into its definition. It is as follows: void __attribute__((weak)) bust_spinlocks(int yes){ if (yes) { ++oops_in_progress; } else {#ifdef CONFIG_VT unblank_screen();#endif console_unblank(); if (--oops_in_progress == 0) wake_up_klogd(); }} So basically when i am saying bust_spinlocks(1), it is just incrementing the oops)_in_progress variable. How is it serving the purposr of a lock here? Best Regards, Manty
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies