From: Stefan Richter <stefanr@s5r6.in-berlin.de>
To: linux1394-devel@lists.sourceforge.net
Cc: "Arjan van de Ven" <arjan@linux.intel.com>,
"Jiri Slaby" <jirislaby@gmail.com>,
"Ben Collins" <bcollins@ubuntu.com>,
"Jody McIntyre" <scjody@modernduck.com>,
linux-kernel@vger.kernel.org, "Andrew Morton" <akpm@osdl.org>,
"J.A. Magallón" <jamagallon@ono.com>
Subject: [PATCH 2.6.17-rc5-mm3] ieee1394: hl_irqs_lock is taken in hardware interrupt context
Date: Mon, 5 Jun 2006 13:28:16 +0200 (CEST) [thread overview]
Message-ID: <tkrat.02c63cb007e86f12@s5r6.in-berlin.de> (raw)
In-Reply-To: <1149179744.4533.205.camel@grayson>
ohci1394 and pcilynx call highlevel_host_reset from their hardware
interrupt handler (via hpsb_selfid_complete). Therefore all readers and
writers of hl_irqs_lock have to disable interrupts. Reported by Jiri
Slaby and J. A. Magallon.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
---
drivers/ieee1394/highlevel.c | 27 +++++++++++++++++----------
1 files changed, 17 insertions(+), 10 deletions(-)
Index: linux/drivers/ieee1394/highlevel.c
===================================================================
--- linux.orig/drivers/ieee1394/highlevel.c 2006-06-03 14:11:58.000000000 +0200
+++ linux/drivers/ieee1394/highlevel.c 2006-06-05 11:42:07.000000000 +0200
@@ -210,6 +210,8 @@ static int highlevel_for_each_host_reg(s
void hpsb_register_highlevel(struct hpsb_highlevel *hl)
{
+ unsigned long flags;
+
INIT_LIST_HEAD(&hl->addr_list);
INIT_LIST_HEAD(&hl->host_info_list);
@@ -219,9 +221,9 @@ void hpsb_register_highlevel(struct hpsb
list_add_tail(&hl->hl_list, &hl_drivers);
up_write(&hl_drivers_sem);
- write_lock(&hl_irqs_lock);
+ write_lock_irqsave(&hl_irqs_lock, flags);
list_add_tail(&hl->irq_list, &hl_irqs);
- write_unlock(&hl_irqs_lock);
+ write_unlock_irqrestore(&hl_irqs_lock, flags);
if (hl->add_host)
nodemgr_for_each_host(hl, highlevel_for_each_host_reg);
@@ -282,9 +284,11 @@ static int highlevel_for_each_host_unreg
void hpsb_unregister_highlevel(struct hpsb_highlevel *hl)
{
- write_lock(&hl_irqs_lock);
+ unsigned long flags;
+
+ write_lock_irqsave(&hl_irqs_lock, flags);
list_del(&hl->irq_list);
- write_unlock(&hl_irqs_lock);
+ write_unlock_irqrestore(&hl_irqs_lock, flags);
down_write(&hl_drivers_sem);
list_del(&hl->hl_list);
@@ -518,42 +522,45 @@ void highlevel_remove_host(struct hpsb_h
void highlevel_host_reset(struct hpsb_host *host)
{
+ unsigned long flags;
struct hpsb_highlevel *hl;
- read_lock(&hl_irqs_lock);
+ read_lock_irqsave(&hl_irqs_lock, flags);
list_for_each_entry(hl, &hl_irqs, irq_list) {
if (hl->host_reset)
hl->host_reset(host);
}
- read_unlock(&hl_irqs_lock);
+ read_unlock_irqrestore(&hl_irqs_lock, flags);
}
void highlevel_iso_receive(struct hpsb_host *host, void *data, size_t length)
{
+ unsigned long flags;
struct hpsb_highlevel *hl;
int channel = (((quadlet_t *)data)[0] >> 8) & 0x3f;
- read_lock(&hl_irqs_lock);
+ read_lock_irqsave(&hl_irqs_lock, flags);
list_for_each_entry(hl, &hl_irqs, irq_list) {
if (hl->iso_receive)
hl->iso_receive(host, channel, data, length);
}
- read_unlock(&hl_irqs_lock);
+ read_unlock_irqrestore(&hl_irqs_lock, flags);
}
void highlevel_fcp_request(struct hpsb_host *host, int nodeid, int direction,
void *data, size_t length)
{
+ unsigned long flags;
struct hpsb_highlevel *hl;
int cts = ((quadlet_t *)data)[0] >> 4;
- read_lock(&hl_irqs_lock);
+ read_lock_irqsave(&hl_irqs_lock, flags);
list_for_each_entry(hl, &hl_irqs, irq_list) {
if (hl->fcp_request)
hl->fcp_request(host, nodeid, direction, cts, data,
length);
}
- read_unlock(&hl_irqs_lock);
+ read_unlock_irqrestore(&hl_irqs_lock, flags);
}
int highlevel_read(struct hpsb_host *host, int nodeid, void *data,
next prev parent reply other threads:[~2006-06-05 11:31 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-01 8:48 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 9:30 ` 2.6.17-rc5-mm2 Mike Galbraith
2006-06-01 9:45 ` 2.6.17-rc5-mm2 Jens Axboe
2006-06-01 9:48 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 9:34 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 9:56 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 10:11 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 10:33 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 10:53 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 11:25 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 11:59 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 16:22 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 22:15 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 12:20 ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-01 16:19 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 18:34 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 6:54 ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-02 7:09 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 7:22 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 7:21 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 7:13 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 7:37 ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-02 7:51 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 20:53 ` 2.6.17-rc5-mm2 Daniel Jacobowitz
2006-06-01 10:23 ` 2.6.17-rc5-mm2 Jeff Garzik
2006-06-01 11:42 ` 2.6.17-rc5-mm2 another compile error Helge Hafting
2006-06-01 16:29 ` Andrew Morton
2006-06-21 12:07 ` Adrian Bunk
2006-06-01 11:54 ` 2.6.17-rc5-mm2 stack unwind compile failure Helge Hafting
2006-06-01 16:30 ` Andrew Morton
2006-06-01 12:35 ` 2.6.17-rc5-mm2 md cause BUGs, and readahead speedup Helge Hafting
2006-06-01 12:54 ` Arjan van de Ven
2006-06-01 13:03 ` 2.6.17-rc5-mm2 link issues on s390 Cedric Le Goater
2006-06-01 13:28 ` Martin Schwidefsky
2006-06-01 13:53 ` Cedric Le Goater
2006-06-08 7:28 ` Heiko Carstens
2006-06-08 9:13 ` Cedric Le Goater
2006-06-08 11:02 ` Heiko Carstens
2006-06-08 12:45 ` Cedric Le Goater
2006-06-09 7:58 ` Heiko Carstens
2006-06-01 15:35 ` 2.6.17-rc5-mm2 Jiri Slaby
2006-06-01 15:49 ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 16:35 ` 2.6.17-rc5-mm2 Ben Collins
2006-06-05 11:28 ` Stefan Richter [this message]
2006-06-05 11:31 ` [PATCH 2.6.17-rc5-mm3] ieee1394: adjust code formatting in highlevel.c Stefan Richter
2006-06-05 12:07 ` [PATCH 2.6.17-rc5-mm3] ieee1394: hl_irqs_lock is taken in hardware interrupt context Stefan Richter
2006-06-01 15:51 ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 17:20 ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 17:35 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 17:36 ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 19:04 ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 22:30 ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 17:22 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 17:27 ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 17:40 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 19:31 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 21:51 ` 2.6.17-rc5-mm2 Jesper Juhl
2006-06-01 21:52 ` 2.6.17-rc5-mm2 Jesper Juhl
2006-06-01 22:25 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-01 22:40 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 22:32 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-01 22:52 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 0:07 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 0:28 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 0:43 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 0:58 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 1:38 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 6:02 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 13:14 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 14:20 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 18:01 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 18:06 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 20:53 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 22:33 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-03 7:13 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-03 14:41 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-03 21:10 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-04 2:29 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-04 8:33 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-04 7:57 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 15:51 ` 2.6.17-rc5-mm2 Alan Cox
2006-06-02 18:21 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 18:25 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 3:23 ` 2.6.17-rc5-mm2 KAMEZAWA Hiroyuki
2006-06-02 5:06 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 10:09 ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 11:10 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 11:17 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 11:34 ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 14:13 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 14:46 ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 15:10 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 19:49 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 20:09 ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 18:38 ` 2.6.17-rc5-mm2 Mel Gorman
2006-06-02 18:59 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-03 15:29 ` 2.6.17-rc5-mm2 Mel Gorman
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=tkrat.02c63cb007e86f12@s5r6.in-berlin.de \
--to=stefanr@s5r6.in-berlin.de \
--cc=akpm@osdl.org \
--cc=arjan@linux.intel.com \
--cc=bcollins@ubuntu.com \
--cc=jamagallon@ono.com \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=scjody@modernduck.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome