public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Userspace process may be able to DoS kernel
@ 2006-10-11 16:54 Günther Starnberger
  2006-10-12  6:02 ` Joerg Platte
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Günther Starnberger @ 2006-10-11 16:54 UTC (permalink / raw)
  To: linux-kernel

[I'm not subscribed on this list - please CC answers to me.]

Hello,

It seems that the latest version of Skype may exhibit a problem in the
kernel where a non-root userspace process is able to block the whole
system for durations of up to several minutes. If someone is able to
reproduce the steps which cause the problem he may be able to DoS a
system by consecutively causing soft lockups.

There were some reports of this problem on other lists before, but
mostly on tainted systems. I was able to reproduce this problem on a
non-tainted mostly vanilla 2.6.17.6 kernel (it includes the suspend2
patches). As most users who reported this problem are using Ubuntu,
the problem may be related to one of the settings in Ubuntu's kernel
config. The configuration of my kernel is also based on the Ubuntu
kernel config. As I am not using the patched kernel by Ubuntu I hope
that the LKML is the right place to report this issue.

The lockup usually occurs when Skype 1.3.x for Linux (I'm using
1.3.0.53) sits around idle for some time and then (presumably) uses
the sound device (i.e. for me it happens when I call a contact -
others reported this problem occurs for incoming messages [there may
be an audio notification of the messages enabled]). The lockup can
take from several seconds (where it is not detected by the kernel) up
to some minutes. The whole system seems to be blocked - i.e. there is
not even disk IO.

dmesg reports the following:
BUG: soft lockup detected on CPU#0!
 <c01562cd> softlockup_tick+0xad/0xf0  <c012e609> update_process_times+0x39/0x90
 <c011600b> smp_apic_timer_interrupt+0x5b/0x70  <c0110037>
get_offset_pmtmr+0x97/0x1060
 <c0103d20> apic_timer_interrupt+0x1c/0x24  <c013d390> hrtimer_get_res+0x0/0x60
 <c0110037> get_offset_pmtmr+0x97/0x1060  <c0106b9f> do_gettimeofday+0x1f/0xd0
  <c0129654> getnstimeofday+0x14/0x40  <c01398d1> sys_clock_gettime+0x31/0xb0
 <c01031e7> sysenter_past_esp+0x54/0x75

A copy of my kernel config is available at:
http://virtual.sysfrog.org/~gst/config.txt

The hardware where this problem occurs here is a X41 Thinkpad (Pentium
M Dothan). There are also reports on other non-Intel CPUs e.g. AMD
Turion 64.

Please see the more extensive documentation of this problem on
https://launchpad.net/distros/ubuntu/+source/linux-source-2.6.15/+bug/53216
(although some of the people there use tainted kernels).

I will upgrade my 2.6.17.6 kernel to 2.6.18 and try to reproduce the
problem there in the following days (but I fear that I won't have much
time before the weekend).

bye,
/gst

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-11 16:54 Userspace process may be able to DoS kernel Günther Starnberger
@ 2006-10-12  6:02 ` Joerg Platte
  2006-10-12  6:49   ` Willy Tarreau
  2006-10-12 11:30   ` Pekka Enberg
  2006-10-12 15:51 ` Lee Revell
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 22+ messages in thread
From: Joerg Platte @ 2006-10-12  6:02 UTC (permalink / raw)
  To: Günther Starnberger; +Cc: linux-kernel

Am Mittwoch, 11. Oktober 2006 18:54 schrieb Günther Starnberger:

> I will upgrade my 2.6.17.6 kernel to 2.6.18 and try to reproduce the
> problem there in the following days (but I fear that I won't have much
> time before the weekend).

Using 2.6.18 does not solve the problem. I can see exactly the same behavior 
with a vanilla and not tainted 2.6.18 kernel.

regards,
Jörg

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12  6:02 ` Joerg Platte
@ 2006-10-12  6:49   ` Willy Tarreau
  2006-10-12 10:54     ` Joerg Platte
  2006-10-12 11:30   ` Pekka Enberg
  1 sibling, 1 reply; 22+ messages in thread
From: Willy Tarreau @ 2006-10-12  6:49 UTC (permalink / raw)
  To: jplatte; +Cc: Günther Starnberger, linux-kernel

On Thu, Oct 12, 2006 at 08:02:58AM +0200, Joerg Platte wrote:
> Am Mittwoch, 11. Oktober 2006 18:54 schrieb Günther Starnberger:
> 
> > I will upgrade my 2.6.17.6 kernel to 2.6.18 and try to reproduce the
> > problem there in the following days (but I fear that I won't have much
> > time before the weekend).
> 
> Using 2.6.18 does not solve the problem. I can see exactly the same behavior 
> with a vanilla and not tainted 2.6.18 kernel.

Just out of curiosity, does the system still respond to ping during this
period, and does the time still progress during the lock up ? Not that it
could help me find out what's happening, but it might help troubleshooting
the problem.

Regards,
Willy


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12  6:49   ` Willy Tarreau
@ 2006-10-12 10:54     ` Joerg Platte
  0 siblings, 0 replies; 22+ messages in thread
From: Joerg Platte @ 2006-10-12 10:54 UTC (permalink / raw)
  To: Willy Tarreau; +Cc: Günther Starnberger, linux-kernel

Am Donnerstag, 12. Oktober 2006 08:49 schrieb Willy Tarreau:
> On Thu, Oct 12, 2006 at 08:02:58AM +0200, Joerg Platte wrote:
> > Using 2.6.18 does not solve the problem. I can see exactly the same
> > behavior with a vanilla and not tainted 2.6.18 kernel.
>
> Just out of curiosity, does the system still respond to ping during this
> period, and does the time still progress during the lock up ? Not that it
> could help me find out what's happening, but it might help troubleshooting
> the problem.

Pinging the system works and the the time is still correct. But this time I 
was not able to trigger a kernel warning, because I was not able to generate 
a long lockup. Maybe I'll have to wait a few more hours before trying it 
again, because the duration of the lockup is proportional to the time skype 
is running.

regards,
Jörg

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12  6:02 ` Joerg Platte
  2006-10-12  6:49   ` Willy Tarreau
@ 2006-10-12 11:30   ` Pekka Enberg
  2006-10-12 11:41     ` Joerg Platte
  1 sibling, 1 reply; 22+ messages in thread
From: Pekka Enberg @ 2006-10-12 11:30 UTC (permalink / raw)
  To: jplatte; +Cc: Günther Starnberger, linux-kernel

Hi Joerg,

On 10/12/06, Joerg Platte <lists@naasa.net> wrote:
> Using 2.6.18 does not solve the problem. I can see exactly the same behavior
> with a vanilla and not tainted 2.6.18 kernel.

Do you see this with 2.6.16 also or is it new to 2.6.17?

                                           Pekka

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 11:30   ` Pekka Enberg
@ 2006-10-12 11:41     ` Joerg Platte
  2006-10-12 11:57       ` Pekka Enberg
  0 siblings, 1 reply; 22+ messages in thread
From: Joerg Platte @ 2006-10-12 11:41 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: Günther Starnberger, linux-kernel

Am Donnerstag, 12. Oktober 2006 13:30 schrieb Pekka Enberg:
Hi,

> On 10/12/06, Joerg Platte <lists@naasa.net> wrote:
> > Using 2.6.18 does not solve the problem. I can see exactly the same
> > behavior with a vanilla and not tainted 2.6.18 kernel.
>
> Do you see this with 2.6.16 also or is it new to 2.6.17?

Hmmm, I deleted all my 2.6.16 kernels and I can't test a newly compiled 2.6.16 
kernel before the weekend. But if I remember correctly, on previous kernel 
versions skype just generates 100% system load when using the sound device 
after some time (especially after a resume) and stuttered audio but no system 
lockups. Hence, it worked much better than now from the kernel point of view 
but was not usable from the skype users point of view. It was a userspace 
only problem.

regards,
Jörg

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 11:41     ` Joerg Platte
@ 2006-10-12 11:57       ` Pekka Enberg
  2006-10-12 20:11         ` Joerg Platte
  0 siblings, 1 reply; 22+ messages in thread
From: Pekka Enberg @ 2006-10-12 11:57 UTC (permalink / raw)
  To: jplatte; +Cc: Günther Starnberger, linux-kernel

On 10/12/06, Joerg Platte <lists@naasa.net> wrote:
> Hmmm, I deleted all my 2.6.16 kernels and I can't test a newly compiled 2.6.16
> kernel before the weekend. But if I remember correctly, on previous kernel
> versions skype just generates 100% system load when using the sound device
> after some time (especially after a resume) and stuttered audio but no system
> lockups. Hence, it worked much better than now from the kernel point of view
> but was not usable from the skype users point of view. It was a userspace
> only problem.

If that is the case, you can do git bisect to help us narrow down the
cause. See http://www.kernel.org/pub/software/scm/git/docs/howto/isolate-bugs-with-bisect.txt
for further details.

                                                   Pekka

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-11 16:54 Userspace process may be able to DoS kernel Günther Starnberger
  2006-10-12  6:02 ` Joerg Platte
@ 2006-10-12 15:51 ` Lee Revell
  2006-10-12 16:55   ` Günther Starnberger
  2006-10-12 20:30   ` Günther Starnberger
  2006-10-12 15:56 ` Lee Revell
       [not found] ` <200611100803.03958.lists@naasa.net>
  3 siblings, 2 replies; 22+ messages in thread
From: Lee Revell @ 2006-10-12 15:51 UTC (permalink / raw)
  To: Günther Starnberger; +Cc: linux-kernel

On Wed, 2006-10-11 at 12:54 -0400, Günther Starnberger wrote:
> The lockup usually occurs when Skype 1.3.x for Linux (I'm using
> 1.3.0.53) sits around idle for some time and then (presumably) uses
> the sound device (i.e. for me it happens when I call a contact -
> others reported this problem occurs for incoming messages [there may
> be an audio notification of the messages enabled]). The lockup can
> take from several seconds (where it is not detected by the kernel) up
> to some minutes. The whole system seems to be blocked - i.e. there is
> not even disk IO.

Do you get the same behavior using the old OSS drivers that you get with
ALSA's OSS emulation?

Lee


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-11 16:54 Userspace process may be able to DoS kernel Günther Starnberger
  2006-10-12  6:02 ` Joerg Platte
  2006-10-12 15:51 ` Lee Revell
@ 2006-10-12 15:56 ` Lee Revell
  2006-10-12 16:10   ` Jan Engelhardt
       [not found] ` <200611100803.03958.lists@naasa.net>
  3 siblings, 1 reply; 22+ messages in thread
From: Lee Revell @ 2006-10-12 15:56 UTC (permalink / raw)
  To: Günther Starnberger; +Cc: linux-kernel

On Wed, 2006-10-11 at 12:54 -0400, Günther Starnberger wrote:
> As most users who reported this problem are using Ubuntu,
> the problem may be related to one of the settings in Ubuntu's kernel
> config. The configuration of my kernel is also based on the Ubuntu
> kernel config. As I am not using the patched kernel by Ubuntu I hope
> that the LKML is the right place to report this issue. 

IIRC Ubuntu is the only major distro that ships with CONFIG_PREEMPT=y.
Any difference if you disable it?

Lee


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 15:56 ` Lee Revell
@ 2006-10-12 16:10   ` Jan Engelhardt
  2006-10-12 16:19     ` Lee Revell
  0 siblings, 1 reply; 22+ messages in thread
From: Jan Engelhardt @ 2006-10-12 16:10 UTC (permalink / raw)
  To: Lee Revell; +Cc: Günther Starnberger, linux-kernel


>> As most users who reported this problem are using Ubuntu,
>> the problem may be related to one of the settings in Ubuntu's kernel
>> config. The configuration of my kernel is also based on the Ubuntu
>> kernel config. As I am not using the patched kernel by Ubuntu I hope
>> that the LKML is the right place to report this issue. 
>
>IIRC Ubuntu is the only major distro that ships with CONFIG_PREEMPT=y.
>Any difference if you disable it?

SUSE uses CONFIG_PREEMPT(?) Voluntary Preemption too.


	-`J'
-- 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 16:10   ` Jan Engelhardt
@ 2006-10-12 16:19     ` Lee Revell
  2006-10-12 22:02       ` Jan Engelhardt
  0 siblings, 1 reply; 22+ messages in thread
From: Lee Revell @ 2006-10-12 16:19 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Günther Starnberger, linux-kernel

On Thu, 2006-10-12 at 18:10 +0200, Jan Engelhardt wrote:
> >> As most users who reported this problem are using Ubuntu,
> >> the problem may be related to one of the settings in Ubuntu's kernel
> >> config. The configuration of my kernel is also based on the Ubuntu
> >> kernel config. As I am not using the patched kernel by Ubuntu I hope
> >> that the LKML is the right place to report this issue. 
> >
> >IIRC Ubuntu is the only major distro that ships with CONFIG_PREEMPT=y.
> >Any difference if you disable it?
> 
> SUSE uses CONFIG_PREEMPT(?) Voluntary Preemption too.

CONFIG_PREEMPT_VOLUNTARY != CONFIG_PREEMPT


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 15:51 ` Lee Revell
@ 2006-10-12 16:55   ` Günther Starnberger
  2006-10-12 17:05     ` Lee Revell
  2006-10-12 20:30   ` Günther Starnberger
  1 sibling, 1 reply; 22+ messages in thread
From: Günther Starnberger @ 2006-10-12 16:55 UTC (permalink / raw)
  To: Lee Revell; +Cc: linux-kernel

On 10/12/06, Lee Revell <rlrevell@joe-job.com> wrote:

> Do you get the same behavior using the old OSS drivers that you get with
> ALSA's OSS emulation?

No - not yet. The problem occurs when I use ALSA directly as well as
with ALSA's OSS emulation.

I will check if there is an OSS driver for my soundcard so that I can
try this out.

bye,
/gst

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 16:55   ` Günther Starnberger
@ 2006-10-12 17:05     ` Lee Revell
  0 siblings, 0 replies; 22+ messages in thread
From: Lee Revell @ 2006-10-12 17:05 UTC (permalink / raw)
  To: Günther Starnberger; +Cc: linux-kernel

On Thu, 2006-10-12 at 12:55 -0400, Günther Starnberger wrote:
> On 10/12/06, Lee Revell <rlrevell@joe-job.com> wrote:
> 
> > Do you get the same behavior using the old OSS drivers that you get with
> > ALSA's OSS emulation?
> 
> No - not yet. The problem occurs when I use ALSA directly as well as
> with ALSA's OSS emulation.
> 

Ah, OK, I did not realize that Skype had (FINALLY) released a version
with ALSA support...

> I will check if there is an OSS driver for my soundcard so that I can
> try this out.
> 



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 11:57       ` Pekka Enberg
@ 2006-10-12 20:11         ` Joerg Platte
  2006-10-12 20:25           ` Günther Starnberger
  0 siblings, 1 reply; 22+ messages in thread
From: Joerg Platte @ 2006-10-12 20:11 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: Günther Starnberger, linux-kernel

Am Donnerstag, 12. Oktober 2006 13:57 schrieb Pekka Enberg:
> If that is the case, you can do git bisect to help us narrow down the
> cause. See
> http://www.kernel.org/pub/software/scm/git/docs/howto/isolate-bugs-with-bis
>ect.txt for further details.

Not that easy, since it takes a few hours to be able to trigger the bug. I 
tried to record the system calls with strace but without success. Skype did 
not cause any lockups and then crashes... Maybe the timing is too different 
with strace.

regards,
Jörg

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 20:11         ` Joerg Platte
@ 2006-10-12 20:25           ` Günther Starnberger
  2006-10-13 13:24             ` Joerg Platte
  0 siblings, 1 reply; 22+ messages in thread
From: Günther Starnberger @ 2006-10-12 20:25 UTC (permalink / raw)
  To: jplatte; +Cc: Pekka Enberg, linux-kernel

On 10/12/06, Joerg Platte <lists@naasa.net> wrote:

> Not that easy, since it takes a few hours to be able to trigger the bug. I
> tried to record the system calls with strace but without success. Skype did
> not cause any lockups and then crashes... Maybe the timing is too different
> with strace.

According to [1] there are several anti-debugging techniques used in
Skype. I.e. if it notices some sort of debugger it will crash (on
purpose).

bye,
/gst

[1] www.blackhat.com/presentations/bh-europe-06/bh-eu-06-biondi/bh-eu-06-biondi-up.pdf

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 15:51 ` Lee Revell
  2006-10-12 16:55   ` Günther Starnberger
@ 2006-10-12 20:30   ` Günther Starnberger
  2006-10-12 20:37     ` Lee Revell
  1 sibling, 1 reply; 22+ messages in thread
From: Günther Starnberger @ 2006-10-12 20:30 UTC (permalink / raw)
  To: Lee Revell; +Cc: linux-kernel

On 10/12/06, Lee Revell <rlrevell@joe-job.com> wrote:

> Do you get the same behavior using the old OSS drivers that you get with
> ALSA's OSS emulation?

Yes. I've rmmod'ed ALSA and used the i810_audio OSS module instead.
Same problem.

bye,
/gst

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 20:30   ` Günther Starnberger
@ 2006-10-12 20:37     ` Lee Revell
  0 siblings, 0 replies; 22+ messages in thread
From: Lee Revell @ 2006-10-12 20:37 UTC (permalink / raw)
  To: Günther Starnberger; +Cc: linux-kernel

On Thu, 2006-10-12 at 16:30 -0400, Günther Starnberger wrote:
> On 10/12/06, Lee Revell <rlrevell@joe-job.com> wrote:
> 
> > Do you get the same behavior using the old OSS drivers that you get with
> > ALSA's OSS emulation?
> 
> Yes. I've rmmod'ed ALSA and used the i810_audio OSS module instead.
> Same problem.

OK, so the sound subsystem has been ruled out.  That just leaves...
everything else ;-)

Lee


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 16:19     ` Lee Revell
@ 2006-10-12 22:02       ` Jan Engelhardt
  0 siblings, 0 replies; 22+ messages in thread
From: Jan Engelhardt @ 2006-10-12 22:02 UTC (permalink / raw)
  To: Lee Revell; +Cc: Günther Starnberger, linux-kernel


>> >IIRC Ubuntu is the only major distro that ships with CONFIG_PREEMPT=y.
>> >Any difference if you disable it?
>> 
>> SUSE uses CONFIG_PREEMPT(?) Voluntary Preemption too.
>
>CONFIG_PREEMPT_VOLUNTARY != CONFIG_PREEMPT

But modinfo (vermagic) prints PREEMPT at least the former case too, 
which is a little bit misleading.


	-`J'
-- 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-10-12 20:25           ` Günther Starnberger
@ 2006-10-13 13:24             ` Joerg Platte
  0 siblings, 0 replies; 22+ messages in thread
From: Joerg Platte @ 2006-10-13 13:24 UTC (permalink / raw)
  To: Günther Starnberger; +Cc: Pekka Enberg, linux-kernel

Am Donnerstag, 12. Oktober 2006 22:25 schrieb Günther Starnberger:
Hi,

> According to [1] there are several anti-debugging techniques used in
> Skype. I.e. if it notices some sort of debugger it will crash (on
> purpose).

I know. I just wanted to know if I'm able to catch a blocking system call...

> [1]
> www.blackhat.com/presentations/bh-europe-06/bh-eu-06-biondi/bh-eu-06-biondi
>-up.pdf -

Here is my output from a longer lockup today. I can confirm, that pings and 
system time are not affected by the lockup. I didn't try to log in via ssh 
but I think that will not work, too.

Oct 13 15:11:08 localhost kernel: BUG: soft lockup detected on CPU#0!
Oct 13 15:11:08 localhost kernel:  [<c012f9d5>] softlockup_tick+0x89/0xa4
Oct 13 15:11:08 localhost kernel:  [<c011b458>] update_process_times+0x35/0x57
Oct 13 15:11:08 localhost kernel:  [<c01052c9>] timer_interrupt+0x35/0x64
Oct 13 15:11:08 localhost kernel:  [<c012fc13>] handle_IRQ_event+0x23/0x49
Oct 13 15:11:08 localhost kernel:  [<c012fe45>] __do_IRQ+0x7b/0xde
Oct 13 15:11:08 localhost kernel:  [<c010438a>] do_IRQ+0x40/0x4d
Oct 13 15:11:08 localhost kernel:  [<c0102d82>] common_interrupt+0x1a/0x20
Oct 13 15:11:08 localhost kernel:  [<c01e3f0e>] acpi_pm_read+0x7/0xf
Oct 13 15:11:09 localhost kernel:  [<c011a53d>] getnstimeofday+0x2b/0xac
Oct 13 15:11:09 localhost kernel:  [<c01226f4>] sys_clock_gettime+0x42/0x7e
Oct 13 15:11:09 localhost kernel:  [<c0102bfb>] syscall_call+0x7/0xb
Oct 13 15:11:09 localhost kernel: BUG: soft lockup detected on CPU#0!
Oct 13 15:11:09 localhost kernel:  [<c012f9d5>] softlockup_tick+0x89/0xa4
Oct 13 15:11:09 localhost kernel:  [<c011b458>] update_process_times+0x35/0x57
Oct 13 15:11:09 localhost kernel:  [<c01052c9>] timer_interrupt+0x35/0x64
Oct 13 15:11:09 localhost kernel:  [<c012fc13>] handle_IRQ_event+0x23/0x49
Oct 13 15:11:09 localhost kernel:  [<c012fe45>] __do_IRQ+0x7b/0xde
Oct 13 15:11:09 localhost kernel:  [<c010438a>] do_IRQ+0x40/0x4d
Oct 13 15:11:09 localhost kernel:  [<c0102d82>] common_interrupt+0x1a/0x20
Oct 13 15:11:09 localhost kernel:  [<c01e3f0e>] acpi_pm_read+0x7/0xf
Oct 13 15:11:09 localhost kernel:  [<c011a53d>] getnstimeofday+0x2b/0xac
Oct 13 15:11:09 localhost kernel:  [<c01226f4>] sys_clock_gettime+0x42/0x7e
Oct 13 15:11:09 localhost kernel:  [<c0102bfb>] syscall_call+0x7/0xb

Typically I have two lockups, a first longer one and then a shorter one. Then 
everything runs without any problems. 

regards,
Jörg

-- 
PGP Key: send mail with subject 'SEND PGP-KEY' PGP Key-ID: FD 4E 21 1D
PGP Fingerprint: 388A872AFC5649D3 BCEC65778BE0C605

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
       [not found]   ` <20061109231958.f18cd1ef.akpm@osdl.org>
@ 2006-11-11 12:29     ` Joerg Platte
  2006-11-11 12:39       ` Arjan van de Ven
  0 siblings, 1 reply; 22+ messages in thread
From: Joerg Platte @ 2006-11-11 12:29 UTC (permalink / raw)
  To: linux-kernel

Am Freitag, 10. November 2006 08:19 schrieb Andrew Morton:

> OK, thanks.
>
> It'd be useful if you could grab a kernel profile when the system load is
> high:

> Or, if oprofile is working:
>
>
> #!/bin/sh
> sudo opcontrol --stop
> sudo opcontrol --shutdown
> sudo rm -rf /var/lib/oprofile
> sudo opcontrol --vmlinux=/boot/vmlinux-$(uname -r)
> sudo opcontrol --start-daemon
> sudo opcontrol --start
> sleep 10
> sudo opcontrol --stop
> sudo opcontrol --shutdown
> sudo opreport -l /boot/vmlinux-$(uname -r) | head -50

Here is the oprofile log. Seems to be acpi related?

CPU: CPU with timer interrupt, speed 0 MHz (estimated)
Profiling through timer interrupt
samples  %        symbol name
709      44.2848  acpi_pm_read
232      14.4909  schedule
164      10.2436  system_call
61        3.8101  __wake_up
48        2.9981  __copy_to_user_ll
42        2.6234  do_futex
29        1.8114  futex_wake
29        1.8114  sys_futex
26        1.6240  hash_futex
25        1.5615  getnstimeofday
20        1.2492  preempt_schedule
20        1.2492  sys_clock_gettime
18        1.1243  copy_to_user
17        1.0618  __copy_from_user_ll
17        1.0618  get_futex_key
16        0.9994  futex_requeue
15        0.9369  schedule_timeout
11        0.6871  __mod_timer
9         0.5621  do_gettimeofday
9         0.5621  sys_ioctl
9         0.5621  syscall_exit
8         0.4997  fget_light
7         0.4372  find_extend_vma
6         0.3748  find_vma
5         0.3123  copy_from_user
5         0.3123  lock_timer_base
5         0.3123  sys_gettimeofday
4         0.2498  do_ioctl
4         0.2498  up_read
4         0.2498  vfs_ioctl
4         0.2498  wake_futex
3         0.1874  add_wait_queue
3         0.1874  down_read
2         0.1249  memcpy
2         0.1249  profile_hit
1         0.0625  csum_partial
1         0.0625  do_page_fault
1         0.0625  dummy_file_ioctl
1         0.0625  fput
1         0.0625  handle_IRQ_event
1         0.0625  ip_append_data
1         0.0625  memcmp
1         0.0625  netif_receive_skb
1         0.0625  permission
1         0.0625  sched_clock
1         0.0625  syscall_call
1         0.0625  unmap_vmas


I captured this on my IBM Thinkpad T40p. Here is the system configuration:

Linux ibm 2.6.19-rc5 #1 PREEMPT Wed Nov 8 08:06:17 CET 2006 i686 GNU/Linux

Module                  Size  Used by
sg                     32156  0
sr_mod                 14820  0
lt_hotswap             10888  0
oprofile               18400  1
radeon                109728  2
drm                    69524  3 radeon
binfmt_misc            10696  1
ieee80211_crypt_ccmp     6912  3
cpufreq_userspace       3860  0
cpufreq_powersave       1792  0
rfcomm                 34716  1
l2cap                  21700  5 rfcomm
bluetooth              47780  4 rfcomm,l2cap
nfs                   210280  0
nfsd                  198320  17
exportfs                5440  1 nfsd
lockd                  57480  3 nfs,nfsd
sunrpc                146108  12 nfs,nfsd,lockd
nsc_ircc               17296  0
uinput                  8704  1
af_packet              19848  6
autofs4                19588  2
video                  15172  0
sbs                    14496  0
i2c_ec                  4928  1 sbs
dock                    7240  0
button                  6544  0
container               4352  0
ac                      5060  0
battery                 9860  0
ipt_MASQUERADE          3328  3
iptable_nat             6724  1
ip_nat                 17004  2 ipt_MASQUERADE,iptable_nat
xt_state                2112  9
ipt_LOG                 6080  8
xt_limit                2624  8
ipt_REJECT              4288  2
xt_mark                 1856  2
xt_tcpudp               2880  10
xt_mac                  1856  29
iptable_filter          2880  1
xt_MARK                 2240  3
xt_multiport            3008  8
iptable_mangle          2752  1
ip_tables              12552  3 iptable_nat,iptable_filter,iptable_mangle
x_tables               14276  12 
ipt_MASQUERADE,iptable_nat,xt_state,ipt_LOG,xt_limit,ipt_REJECT,xt_mark,xt_tcpudp,xt_mac,xt_MARK,xt_multiport,ip_tables
ip_conntrack_ftp        7376  0
ip_conntrack           48524  5 
ipt_MASQUERADE,iptable_nat,ip_nat,xt_state,ip_conntrack_ftp
nfnetlink               6360  2 ip_nat,ip_conntrack
deflate                 3712  0
zlib_deflate           18072  1 deflate
zlib_inflate           13632  1 deflate
twofish                 8384  0
twofish_common         35904  1 twofish
serpent                18816  0
aes                    27968  3
blowfish                9280  0
des                    17344  0
cbc                     4288  0
ecb                     3456  0
blkcipher               5504  2 cbc,ecb
sha256                 11008  0
sha1                    2560  0
crypto_null             2496  0
af_key                 31696  2
nls_utf8                2048  1
ntfs                   92788  1
nls_base                7168  2 nls_utf8,ntfs
ext2                   59464  1
dm_snapshot            15328  0
dm_mirror              17936  0
dm_mod                 50520  2 dm_snapshot,dm_mirror
deadline_iosched        5440  0
as_iosched             12616  1
cfq_iosched            16208  1
cdc_acm                14048  0
capability              4744  0
commoncap               6848  1 capability
ircomm_tty             22664  0
ircomm                 13060  1 ircomm_tty
tun                    10368  1
nvram                   8072  1
ibm_acpi               25792  0
sd_mod                 18576  0
8250_pci               19904  0
irtty_sir               6016  0
sir_dev                13956  1 irtty_sir
joydev                  9024  0
snd_intel8x0m          16524  4
snd_seq_oss            28992  0
snd_seq_midi            8160  0
snd_rawmidi            22432  1 snd_seq_midi
snd_seq_midi_event      6784  2 snd_seq_oss,snd_seq_midi
snd_seq                44688  5 snd_seq_oss,snd_seq_midi,snd_seq_midi_event
tsdev                   7424  0
snd_intel8x0           31004  2
snd_ac97_codec         89188  2 snd_intel8x0m,snd_intel8x0
snd_ac97_bus            2240  1 snd_ac97_codec
usb_storage            56576  0
snd_pcm_oss            38432  0
snd_mixer_oss          15424  1 snd_pcm_oss
snd_seq_device          7628  4 snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
ipw2200               136584  0
libusual               16016  1 usb_storage
snd_pcm                71048  6 
snd_intel8x0m,snd_intel8x0,snd_ac97_codec,snd_pcm_oss
snd_timer              20676  2 snd_seq,snd_pcm
yenta_socket           24780  2
rsrc_nonstatic         12032  1 yenta_socket
pcmcia                 34788  0
psmouse                34376  0
irda                  106040  4 nsc_ircc,ircomm_tty,ircomm,sir_dev
i2c_i801                7308  0
usbhid                 47008  0
8250_pnp                9088  0
8250                   20004  2 8250_pci,8250_pnp
serial_core            19584  1 8250
ieee80211              29832  1 ipw2200
ieee80211_crypt         5824  2 ieee80211_crypt_ccmp,ieee80211
parport_pc             35940  0
parport                33288  1 parport_pc
iTCO_wdt               10016  0
pcspkr                  2816  0
evdev                   9152  3
intel_agp              22236  1
agpgart                29744  2 drm,intel_agp
serio_raw               6468  0
crc_ccitt               2112  1 irda
snd                    47972  21 
snd_intel8x0m,snd_seq_oss,snd_rawmidi,snd_seq,snd_intel8x0,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_seq_device,snd_pcm,snd_timer
soundcore               7776  1 snd
snd_page_alloc          9608  3 snd_intel8x0m,snd_intel8x0,snd_pcm
ff_memless              5128  1 usbhid
rtc                    12340  0
pcmcia_core            37520  3 yenta_socket,rsrc_nonstatic,pcmcia
firmware_class          9664  2 ipw2200,pcmcia
ext3                  120904  2
jbd                    53736  1 ext3
mbcache                 8324  2 ext2,ext3
ide_cd                 36192  0
cdrom                  32992  2 sr_mod,ide_cd
ide_disk               15232  6
ata_piix               15368  0
libata                 96276  1 ata_piix
scsi_mod              128588  5 sg,sr_mod,sd_mod,usb_storage,libata
piix                    9156  0 [permanent]
uhci_hcd               21256  0
ehci_hcd               27976  0
usbcore               121924  7 
cdc_acm,usb_storage,libusual,usbhid,uhci_hcd,ehci_hcd
generic                 5316  0 [permanent]
ide_core              109532  6 
lt_hotswap,usb_storage,ide_cd,ide_disk,piix,generic
e1000                 108672  0
thermal                13640  0
fan                     4612  0
unix                   25328  1098
cpufreq_conservative     6368  0
cpufreq_ondemand        7168  1
speedstep_centrino      7120  1
freq_table              4292  2 cpufreq_ondemand,speedstep_centrino
processor              23276  2 thermal,speedstep_centrino
fbcon                  38304  73
tileblit                2496  1 fbcon
crc32                   4288  3 tun,pcmcia,fbcon
font                    8256  1 fbcon
bitblit                 5120  1 fbcon
softcursor              2240  1 bitblit
radeonfb               94144  1
fb                     43688  5 fbcon,tileblit,bitblit,softcursor,radeonfb
fb_ddc                  2560  1 radeonfb
i2c_algo_bit            7560  1 radeonfb
i2c_core               20688  4 i2c_ec,i2c_i801,fb_ddc,i2c_algo_bit
cfbcopyarea             3520  1 radeonfb
cfbimgblt               2816  1 radeonfb
cfbfillrect             3520  1 radeonfb


00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller 
(rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 
03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) 
USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) 
USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) 
USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI 
Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge 
(rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 
01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus 
Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM 
(ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 
Modem Controller (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 [Mobility 
FireGL 9000] (rev 02)
02:00.0 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller 
(rev 01)
02:00.1 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller 
(rev 01)
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet 
Controller (Mobile) (rev 03)
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network 
Connection (rev 05)

regards,
Jörg

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-11-11 12:29     ` Joerg Platte
@ 2006-11-11 12:39       ` Arjan van de Ven
  2006-11-11 13:15         ` Joerg Platte
  0 siblings, 1 reply; 22+ messages in thread
From: Arjan van de Ven @ 2006-11-11 12:39 UTC (permalink / raw)
  To: jplatte; +Cc: linux-kernel

On Sat, 2006-11-11 at 13:29 +0100, Joerg Platte wrote:
> Am Freitag, 10. November 2006 08:19 schrieb Andrew Morton:
> 
> > OK, thanks.
> >
> > It'd be useful if you could grab a kernel profile when the system load is
> > high:
> 
> > Or, if oprofile is working:
> >
> >
> > #!/bin/sh
> > sudo opcontrol --stop
> > sudo opcontrol --shutdown
> > sudo rm -rf /var/lib/oprofile
> > sudo opcontrol --vmlinux=/boot/vmlinux-$(uname -r)
> > sudo opcontrol --start-daemon
> > sudo opcontrol --start
> > sleep 10
> > sudo opcontrol --stop
> > sudo opcontrol --shutdown
> > sudo opreport -l /boot/vmlinux-$(uname -r) | head -50
> 
> Here is the oprofile log. Seems to be acpi related?
> 
> CPU: CPU with timer interrupt, speed 0 MHz (estimated)
> Profiling through timer interrupt
> samples  %        symbol name
> 709      44.2848  acpi_pm_read



this isn't per se acpi related: This is reading the PM timer from your
chipset. The PMTimer is a clock on your chipset that the kernel can use
to read a stable incrementing clock to find out what time it is right
now, usually as part of userspace asking the kernel what time it is via
the gettimeofday() system call. ACPI is just the component that does the
actual (slow) hardware access... eg the messenger.

Normally systems have better/faster clocks than the pmtimer, but there
are circumstances where those can't be used.

1) HPET. The HPET is a lot faster than pmtimer, and very reliable. Most
of the systems sold in the last 3 years have an hpet, but unfortunately,
many bioses turn this off by default. If your BOOS has a "Multimedia
timer" setting, make sure it's set to "On". 
2) TSC. This is a super fast method of finding how much time has passed,
since it's inside the CPU. However there are many reasons why this
method may be unreliable, for example certain powermanagement features
on laptops cause this clock to stop when idle (not useful), or to vary
in frequency (also not useful if you want to find out what time it is).
Also on AMD Opteron SMP systems or extreme Intel big honking NUMA
systems, this timer is not synchronized between the various processors
and that breaks the current time keeping in Linux, and so Linux doesn't
use it in that case.

So my advice is
1) Check the bios to see if you have the HPET enabled. If not, enable
it.
2) Check the kernel config to see if you have HPET enabled there, if not
enable it.
3) Check dmesg to see if there's a reason the kernel doesn't use TSC;
there is probably nothing you can do but at least you know why :)

 
-- 
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: Userspace process may be able to DoS kernel
  2006-11-11 12:39       ` Arjan van de Ven
@ 2006-11-11 13:15         ` Joerg Platte
  0 siblings, 0 replies; 22+ messages in thread
From: Joerg Platte @ 2006-11-11 13:15 UTC (permalink / raw)
  To: Arjan van de Ven; +Cc: linux-kernel

Am Samstag, 11. November 2006 13:39 schrieb Arjan van de Ven:

> this isn't per se acpi related: This is reading the PM timer from your
> chipset. The PMTimer is a clock on your chipset that the kernel can use
> to read a stable incrementing clock to find out what time it is right
> now, usually as part of userspace asking the kernel what time it is via
> the gettimeofday() system call. ACPI is just the component that does the
> actual (slow) hardware access... eg the messenger.

OK.

> Normally systems have better/faster clocks than the pmtimer, but there
> are circumstances where those can't be used.
>
> 1) HPET. The HPET is a lot faster than pmtimer, and very reliable. Most
> of the systems sold in the last 3 years have an hpet, but unfortunately,
> many bioses turn this off by default. If your BOOS has a "Multimedia
> timer" setting, make sure it's set to "On".

My computer is 3,5 years old (one of the first centrino notebooks). Maybe it 
does not have a HPET timer. I can't find HPET somewhere in the kernel.log 
file and no option in the BIOS. But it is enabled in my kernel config.

> 2) TSC. This is a super fast method of finding how much time has passed,
> since it's inside the CPU. However there are many reasons why this
> method may be unreliable, for example certain powermanagement features
> on laptops cause this clock to stop when idle (not useful), or to vary
> in frequency (also not useful if you want to find out what time it is).
> Also on AMD Opteron SMP systems or extreme Intel big honking NUMA
> systems, this timer is not synchronized between the various processors
> and that breaks the current time keeping in Linux, and so Linux doesn't
> use it in that case.

I'm using frequency scaling. Maybe that's a reason for not using TSC in each 
case.

> So my advice is
> 1) Check the bios to see if you have the HPET enabled. If not, enable
> it.
> 2) Check the kernel config to see if you have HPET enabled there, if not
> enable it.
> 3) Check dmesg to see if there's a reason the kernel doesn't use TSC;
> there is probably nothing you can do but at least you know why :)

The kernel semm to use TSC. I can't find another message stating that TSC has 
been disabled.

localhost kernel: Time: tsc clocksource has been installed.

There seem to be some clock drift. Each time when starting skype everything 
works perfect for a couple of hours. Then, skype behaves strange by causing 
this high system load. 

regards,
Jörg

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2006-11-11 13:15 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-11 16:54 Userspace process may be able to DoS kernel Günther Starnberger
2006-10-12  6:02 ` Joerg Platte
2006-10-12  6:49   ` Willy Tarreau
2006-10-12 10:54     ` Joerg Platte
2006-10-12 11:30   ` Pekka Enberg
2006-10-12 11:41     ` Joerg Platte
2006-10-12 11:57       ` Pekka Enberg
2006-10-12 20:11         ` Joerg Platte
2006-10-12 20:25           ` Günther Starnberger
2006-10-13 13:24             ` Joerg Platte
2006-10-12 15:51 ` Lee Revell
2006-10-12 16:55   ` Günther Starnberger
2006-10-12 17:05     ` Lee Revell
2006-10-12 20:30   ` Günther Starnberger
2006-10-12 20:37     ` Lee Revell
2006-10-12 15:56 ` Lee Revell
2006-10-12 16:10   ` Jan Engelhardt
2006-10-12 16:19     ` Lee Revell
2006-10-12 22:02       ` Jan Engelhardt
     [not found] ` <200611100803.03958.lists@naasa.net>
     [not found]   ` <20061109231958.f18cd1ef.akpm@osdl.org>
2006-11-11 12:29     ` Joerg Platte
2006-11-11 12:39       ` Arjan van de Ven
2006-11-11 13:15         ` Joerg Platte

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox