Re: Locking problem in usbserial with 2.6.23-git 5a34417f

From: Larry Finger
Date: Fri Oct 19 2007 - 17:36:42 EST


Jiri Kosina wrote:
> On Fri, 19 Oct 2007, Larry Finger wrote:
>
>> While attempting to configure a new USB modem, the following locking
>> problem occurred. In addition, shortly after this problem occurred, the
>> computer froze. The log data starts at the point that usbserial was
>> loaded and contains everything that was written to disk before the
>> machine locked up. Some info may be missing from the end of the stack
>> dump.
>
> I guess this one is needed.
>
>
> From: Jiri Kosina <jkosina@xxxxxxx>
>
> USB: usbserial - fix potential deadlock between write() and irq
>
> usb_serial_generic_write() doesn't disable interrupts when taking port->lock,
> and could therefore deadlock with usb_serial_generic_read_bulk_callback()
> being called from interrupt, taking the same lock. Fix it.
>
> Signed-off-by: Jiri Kosina <jkosina@xxxxxxx>
>

As I said earlier, the lock problem went away; however, I get the following two kernel warnings:

WARNING: at kernel/sched.c:3475 sub_preempt_count()

Call Trace:
[<ffffffff8022df50>] sub_preempt_count+0x7e/0x91
[<ffffffff80237eb9>] local_bh_enable_ip+0x91/0xf5
[<ffffffff803eaaa8>] _spin_unlock_bh+0x39/0x3e
[<ffffffff88405409>] :ppp_generic:ppp_channel_push+0x72/0xad
[<ffffffff88406528>] :ppp_generic:ppp_write+0x10f/0x121
[<ffffffff8028f75d>] vfs_write+0xae/0x137
[<ffffffff8028fcc6>] sys_write+0x47/0x70
[<ffffffff8020c2fa>] tracesys+0xdc/0xe1

PPP BSD Compression module registered
PPP Deflate Compression module registered
WARNING: at kernel/softirq.c:139 local_bh_enable()

Call Trace:
[<ffffffff80237d82>] local_bh_enable+0x8f/0x135
[<ffffffff8038f9ec>] dev_queue_xmit+0x2a6/0x2d2
[<ffffffff803ab2be>] ip_finish_output+0x221/0x24f
[<ffffffff803ab5d0>] ip_output+0x53/0x55
[<ffffffff803a9df5>] ip_push_pending_frames+0x309/0x3ed
[<ffffffff803c5f88>] udp_push_pending_frames+0x2d7/0x33f
[<ffffffff803c70e9>] udp_sendmsg+0x4d5/0x61d
[<ffffffff80248c99>] lock_hrtimer_base+0x25/0x4a
[<ffffffff803cccce>] inet_sendmsg+0x46/0x53
[<ffffffff80381ca3>] sock_sendmsg+0xdf/0xf8
[<ffffffff80248e8f>] hrtimer_start+0x102/0x114
[<ffffffff8024653c>] autoremove_wake_function+0x0/0x38
[<ffffffff8020bb85>] do_notify_resume+0x68e/0x7ac
[<ffffffff803ea5cb>] trace_hardirqs_on_thunk+0x35/0x3a
[<ffffffff803826b4>] move_addr_to_kernel+0x40/0x49
[<ffffffff803827db>] sys_sendto+0x11e/0x143
[<ffffffff8020bf5d>] sys_rt_sigreturn+0x2a6/0x389
[<ffffffff80265072>] audit_syscall_entry+0x148/0x17e
[<ffffffff8020c2fa>] tracesys+0xdc/0xe1

The second is complaining that interrupts are disabled, and may be related.

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