Re: locks inside receive_buf

From: Steven Rostedt
Date: Thu Mar 31 2011 - 10:33:36 EST


On Thu, Mar 31, 2011 at 04:48:29PM +0530, Pavan Savoy wrote:
>
> Alright, so I see the work gets into the default kthread queue I suppose...?
> However, I am quite puzzled by this kind of OOPS (pasted below...)
>
> Where I know the TTY called my receive_buf (which is st_tty_receive) -
> which internally calls my parsing function st_int_recv() .....
> I was just wondering, whether it is worth making this internal parsing
> function a tasklet by itself ?
>
> I kind of do lot of stuff inside the st_int_recv() - including doing a
> tty->ops->write....
> copy in and out of skb queues - So are all this long enough sleeps?
>
> PC is at st_int_recv+0x2a0/0x354 [st_drv]
> LR is at schedule+0x414/0x4e8

Um, what was the cause of the oops? You did not include that.

-- Steve

> pc : [<bf000fc0>] lr : [<c04c3ff0>] psr: 80000013
> sp : efc55ed0 ip : efc55dc0 fp : efc55f0c
> r10: 00000008 r9 : eec4de60 r8 : 00000004
> r7 : 00000000 r6 : 00000007 r5 : ee77bc8f r4 : ef0f3480
> r3 : 00000000 r2 : 00000000 r1 : 00000020 r0 : 0000001f
> Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
> Control: 10c53c7d Table: af3a004a DAC: 00000015
>
> <snip...>
>
> Backtrace:
> [<bf000d20>] (st_int_recv+0x0/0x354 [st_drv]) from [<bf000170>]
> (st_tty_receive+0x70/0x9c [st_drv])
> [<bf000100>] (st_tty_receive+0x0/0x9c [st_drv]) from [<c02616b4>]
> (flush_to_ldisc+0xfc/0x170)
> r6:ef10e8f0 r5:ef10e8a4 r4:ef10e800
> [<c02615b8>] (flush_to_ldisc+0x0/0x170) from [<c009bf30>]
> (worker_thread+0x154/0x1e0)
> [<c009bddc>] (worker_thread+0x0/0x1e0) from [<c009fce0>] (kthread+0x84/0x8c)
> [<c009fc5c>] (kthread+0x0/0x8c) from [<c008d6bc>] (do_exit+0x0/0x5f0)
>
--
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/