mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Scheduling while atomic in tty code with cdc-acm driver, kernel 2.6.29.1
@ 2009-04-13 23:36 Chuck Ebbert
  2009-04-13 23:50 ` Oliver Neukum
  0 siblings, 1 reply; 3+ messages in thread
From: Chuck Ebbert @ 2009-04-13 23:36 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-usb

BUG: sleeping function called from invalid context at kernel/mutex.c:88
in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper
Pid: 0, comm: swapper Not tainted 2.6.29.1-54.fc11.x86_64 #1
Call Trace:
 <IRQ>  [<ffffffff8104255c>] __might_sleep+0x10b/0x110
 [<ffffffff813a8f2c>] mutex_lock+0x22/0x38
 [<ffffffff8103f597>] ? enqueue_task_fair+0x2a/0x6d
 [<ffffffff8122f794>] echo_char+0x25/0x81
 [<ffffffff81230e03>] n_tty_receive_buf+0x309/0xe50
 [<ffffffff8103be38>] ? task_rq_unlock+0x11/0x13
 [<ffffffff81042d5c>] ? default_wake_function+0x12/0x14
 [<ffffffff8103a1e0>] ? __wake_up_common+0x4e/0x84
 [<ffffffff8104fe2d>] ? __tasklet_schedule+0x77/0x8e
 [<ffffffff8102af47>] ? default_spin_lock_flags+0x9/0xe
 [<ffffffff81232a48>] ? tty_ldisc_try+0x3c/0x44
 [<ffffffff81233781>] flush_to_ldisc+0x10c/0x19f
 [<ffffffff81233864>] tty_flip_buffer_push+0x50/0x61
 [<ffffffffa03ab6ef>] acm_rx_tasklet+0x10c/0x28c [cdc_acm]
 [<ffffffff81050025>] tasklet_action+0x8e/0xf8
 [<ffffffff81050803>] __do_softirq+0x94/0x179
 [<ffffffff810127cc>] call_softirq+0x1c/0x30
 [<ffffffff8101394e>] do_softirq+0x52/0xb9
 [<ffffffff81050426>] irq_exit+0x53/0x90
 [<ffffffff81013c77>] do_IRQ+0x12c/0x151
 [<ffffffff81011f13>] ret_from_intr+0x0/0x2e
 <EOI>  [<ffffffff812187bd>] ? acpi_idle_enter_bm+0x28f/0x2de
 [<ffffffff812187b5>] ? acpi_idle_enter_bm+0x287/0x2de
 [<ffffffff812ee957>] ? cpuidle_idle_call+0x8d/0xc2
 [<ffffffff810102c7>] ? cpu_idle+0x68/0xb3
 [<ffffffff813a435c>] ? start_secondary+0x199/0x19e



Partial trace by kernel line numbers:

drivers/char/n_tty.c:828

drivers/char/n_tty.c:1160

drivers/char/tty_buffer.c:444

drivers/char/tty_buffer.c:486
  if (tty->low_latency)
    flush_to_ldisc(&tty->buf.work.work);  

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

* Re: Scheduling while atomic in tty code with cdc-acm driver, kernel 2.6.29.1
  2009-04-13 23:36 Scheduling while atomic in tty code with cdc-acm driver, kernel 2.6.29.1 Chuck Ebbert
@ 2009-04-13 23:50 ` Oliver Neukum
  2009-04-14  6:12   ` Alan Cox
  0 siblings, 1 reply; 3+ messages in thread
From: Oliver Neukum @ 2009-04-13 23:50 UTC (permalink / raw)
  To: Chuck Ebbert; +Cc: linux-kernel, linux-usb

Am Dienstag 14 April 2009 01:36:33 schrieb Chuck Ebbert:
> BUG: sleeping function called from invalid context at kernel/mutex.c:88
> in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper
> Pid: 0, comm: swapper Not tainted 2.6.29.1-54.fc11.x86_64 #1

Is this specific to 2.6.29.1? It looks like setting low_latency, as cdc-acm,
does for legacy reasons, is harmful now. Please remove these lines:


	/* force low_latency on so that our tty_push actually forces the data 
through,
	   otherwise it is scheduled, and with high data rates data can get lost. */
	tty->low_latency = 1;

	HTH
		Oliver


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

* Re: Scheduling while atomic in tty code with cdc-acm driver, kernel 2.6.29.1
  2009-04-13 23:50 ` Oliver Neukum
@ 2009-04-14  6:12   ` Alan Cox
  0 siblings, 0 replies; 3+ messages in thread
From: Alan Cox @ 2009-04-14  6:12 UTC (permalink / raw)
  To: Oliver Neukum; +Cc: Chuck Ebbert, linux-kernel, linux-usb

On Tue, 14 Apr 2009 01:50:10 +0200
Oliver Neukum <oliver@neukum.org> wrote:

> Am Dienstag 14 April 2009 01:36:33 schrieb Chuck Ebbert:
> > BUG: sleeping function called from invalid context at kernel/mutex.c:88
> > in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper
> > Pid: 0, comm: swapper Not tainted 2.6.29.1-54.fc11.x86_64 #1
> 
> Is this specific to 2.6.29.1? It looks like setting low_latency, as cdc-acm,
> does for legacy reasons, is harmful now. Please remove these lines:

The only thing that has changed is that this incorrect behaviour (setting
low_latency and doing a flip_buffer_push() in IRQ context) now causes a
warn rather than random failure.

The hack setting of it for high data rate devices was obsolete when the
tty buffer changes went in so it can definitely go in those cases.

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

end of thread, other threads:[~2009-04-14  6:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-13 23:36 Scheduling while atomic in tty code with cdc-acm driver, kernel 2.6.29.1 Chuck Ebbert
2009-04-13 23:50 ` Oliver Neukum
2009-04-14  6:12   ` Alan Cox

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

all inboxes | Powered by JetHome®