All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robin Holt <holt@sgi.com>
To: linux-wireless@vger.kernel.org
Cc: Johannes Berg <johannes@sipsolutions.net>,
	Jiri Slaby <jirislaby@gmail.com>,
	Michael Wu <flamingice@sourmilk.net>, Jiri Benc <jbenc@suse.cz>
Subject: Infinite loop in sta_info_debugfs_add_work().
Date: Sat, 4 Oct 2008 05:31:44 -0500	[thread overview]
Message-ID: <20081004103144.GI8534@sgi.com> (raw)

I have been ignoring a hang/pause on my machine running an iwl3945
adapter following a suspend/resume cycle.   I finally decided to start
hunting it down.  This started with an Ubuntu kernel update to the Ubuntu
8.04 dist.  I don't recall seeing the hangs when I was running 7.10.
It continued when I was testing the community 2.6.27-rc1-8 kernels.
KDB helped me track it to one cpu's event thread infinitely looping.

events/0 process is on cpu0 with the following stack.

_spin_unlock_irqrestore+0x10
[mac80211]sta_info_debugfs_add_work+0x82
run_workqueue+0xd4
worker_thread+0x88
kthread+0x42


I few times later, I got:
_cond_resched+0x10
[mac80211]sta_info_destroy+0x10
[mac80211]sta_info_debugfs_add_work+0xee
run_workqueue+0xd4
worker_thread+0x88
kthread+0x42

I then added some debug printk's to sta_info_debugfs_add_work().

if (debug_80211) printk (KERN_WARNING "%d: Got sta = 0x%p, stations = 0x%p\n", __LINE__, sta, sta->local->debugfs.stations); //656
                ieee80211_sta_debugfs_add(sta);
if (debug_80211) printk (KERN_WARNING "%d: Got sta = 0x%p, debugfs.dir = 0x%p\n", __LINE__, sta, sta->debugfs.dir); //658
                rate_control_add_sta_debugfs(sta);

                sta = __sta_info_unpin(sta);
if (debug_80211) printk (KERN_WARNING "%d: Got sta = 0x%p\n", __LINE__, sta); //662
                sta_info_destroy(sta);


This resulted in dmesg output of:
656: Got sta = 0xef747270, stations = 0x0
658: Got sta = 0xef747270, debugfs.dir = 0x0
662: Got sta = 0x0
656: Got sta = 0xef747270, stations = 0x0
658: Got sta = 0xef747270, debugfs.dir = 0x0
662: Got sta = 0x0
656: Got sta = 0xef747270, stations = 0x0
658: Got sta = 0xef747270, debugfs.dir = 0x0
662: Got sta = 0x0
656: Got sta = 0xef747270, stations = 0x0
658: Got sta = 0xef747270, debugfs.dir = 0x0
662: Got sta = 0x0

I made up the 0xef747270 as the battery died before I had it written
down.  The idea is correct even if the address is not.

I have no idea what this code is trying to accomplish.  I assume it is
not corrrectly handling the case where sta->local->debugfs.stations is
NULL.

Any help would be appreciated,
Robin Holt

             reply	other threads:[~2008-10-04 10:31 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-04 10:31 Robin Holt [this message]
2008-10-05  0:19 ` Infinite loop in sta_info_debugfs_add_work() Johannes Berg
2008-10-05  2:31   ` Robin Holt
2008-10-05  8:38     ` Johannes Berg
2008-10-06  6:45       ` Robin Holt
2008-10-06  8:57         ` Johannes Berg
2008-10-06 13:30           ` Robin Holt
2008-10-06 22:09             ` Johannes Berg
2008-10-07 22:52               ` Robin Holt
2008-10-08  7:58                 ` Johannes Berg

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=20081004103144.GI8534@sgi.com \
    --to=holt@sgi.com \
    --cc=flamingice@sourmilk.net \
    --cc=jbenc@suse.cz \
    --cc=jirislaby@gmail.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    /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.