lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 06 Nov 2006 11:02:51 +0100
From:	Mike Galbraith <efault@....de>
To:	Ingo Molnar <mingo@...e.hu>
Cc:	Rui Nuno Capela <rncbc@...bc.org>,
	Daniel Walker <dwalker@...sta.com>,
	linux-kernel@...r.kernel.org,
	Karsten Wiese <fzu@...gehoertderstaat.de>
Subject: Re: realtime-preempt patch-2.6.18-rt7 oops

On Mon, 2006-11-06 at 10:38 +0100, Ingo Molnar wrote:
> * Mike Galbraith <efault@....de> wrote:
> 
> > I just reproduced it running glibc make check.  I had just enabled 
> > kprobes and recompiled with the stock SuSE-10.1 compiler while waiting 
> > for you to send me your .config (nevermind that request) so I could 
> > try to reproduce it here.
> 
> hm, so kprobe_flush_task() is likely PREEMPT_RT-unsafe.
> 
> could you try the patch below, does it help? (a quick review seems to 
> suggest that all codepaths protected by kretprobe_lock are atomic)

Ah, so I did do the right thing.  Besides the oops, I was getting a
pretty frequent non-deadly...

BUG: scheduling while atomic: ld-linux.so.2/0x00000001/11803, CPU#1
 [<b10041fb>] show_trace_log_lvl+0x179/0x18f
 [<b1004803>] show_trace+0x12/0x14
 [<b1004924>] dump_stack+0x19/0x1b
 [<b13aaf02>] __schedule+0x63b/0xea5
 [<b13ab8a6>] schedule+0x30/0xf9
 [<b13ac53a>] rt_spin_lock_slowlock+0x90/0x17a
 [<b13acc67>] rt_spin_lock+0x22/0x24
 [<b13af28b>] kprobe_flush_task+0x11/0x48
 [<b13ab43e>] __schedule+0xb77/0xea5
 [<b13ab8a6>] schedule+0x30/0xf9
 [<b13ac53a>] rt_spin_lock_slowlock+0x90/0x17a
 [<b13acccb>] __rt_spin_lock+0x22/0x28
 [<b13acd64>] rt_write_lock+0x8/0xa
 [<b1024cc5>] do_exit+0x2ae/0x96e
 [<b102541a>] complete_and_exit+0x0/0x16
 [<c90ad000>] 0xc90ad000

...so turned it back into a non-sleeping lock.

You forgot kprobes.h

> 
> 	Ingo
> 
> Index: linux/kernel/kprobes.c
> ===================================================================
> --- linux.orig/kernel/kprobes.c
> +++ linux/kernel/kprobes.c
> @@ -50,7 +50,7 @@ static struct hlist_head kretprobe_inst_
>  static atomic_t kprobe_count;
>  
>  DEFINE_MUTEX(kprobe_mutex);		/* Protects kprobe_table */
> -DEFINE_SPINLOCK(kretprobe_lock);	/* Protects kretprobe_inst_table */
> +DEFINE_RAW_SPINLOCK(kretprobe_lock);	/* Protects kretprobe_inst_table */
>  static DEFINE_PER_CPU(struct kprobe *, kprobe_instance) = NULL;
>  
>  static struct notifier_block kprobe_page_fault_nb = {
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ