Re: [1/2] [NET] link_watch: Move link watch list into net_device

Jeremy Fitzhardinge
2007-05-10T22:00:25Z

Herbert Xu wrote:
> [NET] link_watch: Move link watch list into net_device
>
> These days the link watch mechanism is an integral part of the
> network subsystem as it manages the carrier status. So it now
> makes sense to allocate some memory for it in net_device rather
> than allocating it on demand.

I think there's a problem with one of these two patches. I've been
noticing that one of my events/X threads has been going into a spin for
about 5 mins after boot. I added some debugging to
kernel/workqueue.c:run_workqueue, since its that loop which seems to be
spinning due to list corruption.

When I look to see if that loop has iterated for more than 100 times in
one go (which seems unlikely), I get this:

BUG: cpu 3, count=101 list screwup on c04babe4, func c03217e8
func=linkwatch_event+0x0/0x2a
[<c0109173>] show_trace_log_lvl+0x1a/0x30
[<c0109c7f>] show_trace+0x12/0x14
[<c0109d0c>] dump_stack+0x16/0x18
[<c0137c25>] run_workqueue+0x97/0x18c
[<c01386a4>] worker_thread+0xe5/0xf5
[<c013afe9>] kthread+0x3b/0x62
[<c0108d47>] kernel_thread_helper+0x7/0x10
=======================

I wonder if the problem is that the linkwatch_work is being rescheduled
when its already been scheduled, or something like that?

J