All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Tarhon-Onu Victor <mituc@iasi.rdsnet.ro>
Cc: hadi@cyberus.ca, kuznet@ms2.inr.ac.ru, devik@cdi.cz,
	linux-kernel@vger.kernel.org
Subject: Re: ACPI/HT or Packet Scheduler BUG?
Date: Fri, 15 Apr 2005 17:37:09 -0400	[thread overview]
Message-ID: <1113601029.4294.80.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.61.0504141840420.13546@blackblue.iasi.rdsnet.ro>

On Thu, 2005-04-14 at 18:46 +0300, Tarhon-Onu Victor wrote:
> On Tue, 12 Apr 2005, Tarhon-Onu Victor wrote:
> 
> > 	So the problem should be looked in that changes to the pkt sched API, 
> > the patch containing only those changes is at
> 
>  	The bug is in this portion of code from net/sched/sch_generic.c, 
> in the qdisc_destroy() function:
> 
> ==
>       list_for_each_entry(cq, &cql, list)
>            list_for_each_entry_safe(q, n, &qdisc->dev->qdisc_list, list)
>                 if (TC_H_MAJ(q->parent) == TC_H_MAJ(cq->handle)) {
>                      if (q->ops->cl_ops == NULL)
>                           list_del_init(&q->list);
>                      else
>                           list_move_tail(&q->list, &cql);
>                 }
>       list_for_each_entry_safe(cq, n, &cql, list)
>            list_del_init(&cq->list);
> ==
> 
>  	...and it happens when q->ops->cl_ops is NULL and 
> list_del_init(&q->list) is executed.
> 
>  	The stuff from include/linux/list.h looks ok, it seems like one 
> of those two iterations (list_for_each_entry() and 
> list_for_each_entry_safe()) enters an endless loop when an element is 
> removed from the list under some circumstances.

There's a comment above qdisc_destroy that says:

/* Under dev->queue_lock and BH! */

I'm not so sure this is the case.  I've included the emails of those
listed as Authors of sch_generic.c and sch_htb.c, hopefully they are the
ones who can help (if not, sorry to bother you).  

The list.h is fine, but if another task goes down this list when it
list_del_init is done, there's a chance that the reading task can get to
the deleted item just as it is being deleted, and has pointed itself to
itself. p->next == p.  This would go into an infinite loop.  

The reason sysrq works is because this doesn't stop interrupts. But put
a local_irq_save around that list and run your test, I bet you won't be
able to do anything, but power off with the big button.

Hope someone can help. I don't know the queue disciplines well enough to
make a proper fix.

-- Steve



  reply	other threads:[~2005-04-15 21:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-08 10:13 ACPI/HT or Packet Scheduler BUG? Tarhon-Onu Victor
2005-04-12 12:46 ` Tarhon-Onu Victor
2005-04-14 15:46   ` Tarhon-Onu Victor
2005-04-15 21:37     ` Steven Rostedt [this message]
2005-04-15 21:44       ` jamal
2005-04-15 21:54         ` Steven Rostedt
2005-04-15 22:54           ` Thomas Graf
2005-04-16  1:49             ` Herbert Xu
2005-04-16  5:01               ` Steven Rostedt
2005-04-16 11:06               ` Thomas Graf
2005-04-16 11:12                 ` Herbert Xu
2005-04-17 17:46                   ` Patrick McHardy
2005-04-17 21:37                     ` Herbert Xu
2005-04-16 11:23                 ` Herbert Xu
2005-04-16 11:34                   ` Thomas Graf
2005-04-16 16:04                     ` jamal
2005-04-16 18:21                       ` Thomas Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1113601029.4294.80.camel@localhost.localdomain \
    --to=rostedt@goodmis.org \
    --cc=devik@cdi.cz \
    --cc=hadi@cyberus.ca \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mituc@iasi.rdsnet.ro \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.