[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200808070918.34220.borntraeger@de.ibm.com>
Date: Thu, 7 Aug 2008 09:18:34 +0200
From: Christian Borntraeger <borntraeger@...ibm.com>
To: Rusty Russell <rusty@...tcorp.com.au>
Cc: Alex Nixon <alex.nixon@...rix.com>,
Jeremy Fitzhardinge <jeremy@...p.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: Spinlock recursion in hvc_poll
Am Mittwoch, 6. August 2008 schrieb Alex Nixon:
> The patch appears to fix things.
Rusty,
can this patch go into 2.6.27-rc* via your queue?
---snip----
[PATCH] fix spinlock recursion in hvc_console
commit 611e097d7707741a336a0677d9d69bec40f29f3d
Author: Christian Borntraeger <borntraeger@...ibm.com>
hvc_console: rework setup to replace irq functions with callbacks
introduced a spinlock recursion problem.
request_irq tries to call the handler if the IRQ is shared.
The irq handler of hvc_console calls hvc_poll and hvc_kill
which might take the hvc_struct spinlock. Therefore, we have
to call request_irq outside the spinlock.
We can move the notifier_add safely outside the spinlock as ->data must
not be changed by the backend. Otherwise, tty_hangup would fail anyway.
Signed-off-by: Christian Borntraeger <borntraeger@...ibm.com>
---
drivers/char/hvc_console.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
Index: kvm/drivers/char/hvc_console.c
===================================================================
--- kvm.orig/drivers/char/hvc_console.c
+++ kvm/drivers/char/hvc_console.c
@@ -322,11 +322,10 @@ static int hvc_open(struct tty_struct *t
hp->tty = tty;
- if (hp->ops->notifier_add)
- rc = hp->ops->notifier_add(hp, hp->data);
-
spin_unlock_irqrestore(&hp->lock, flags);
+ if (hp->ops->notifier_add)
+ rc = hp->ops->notifier_add(hp, hp->data);
/*
* If the notifier fails we return an error. The tty layer
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists