From: Adam Belay <ambx1@neo.rr.com>
To: linux@dominikbrodowski.de, akpm@osdl.org, rml@ximian.com,
linux-kernel@vger.kernel.org, linux-pcmcia@lists.infradead.org
Subject: Re: [PATCH] pcmcia driver model support [4/5]
Date: Fri, 6 Aug 2004 10:44:33 +0000 [thread overview]
Message-ID: <20040806104433.GH11641@neo.rr.com> (raw)
In-Reply-To: <20040806103538.GG11641@neo.rr.com>
On Fri, Aug 06, 2004 at 10:35:38AM +0000, Adam Belay wrote:
> On Fri, Aug 06, 2004 at 11:43:20AM +0100, Russell King wrote:
> > On Thu, Aug 05, 2004 at 10:28:20PM +0000, Adam Belay wrote:
> > > It is not safe to use the skt_sem in pcmcia_validate_mem. This patch
> > > fixes a real world bug, and without it many systems will fail to shutdown
> > > properly.
> >
> > However, we need to take this semaphore here to prevent the socket state
> > changing. It sounds from your description that we're hitting yet another
> > stupid recursion bug in PCMCIA...
>
> It's worth noting that we don't hold skt_sem in pcmcia_get_first_tuple (and
> possibly others), but we probably should be. This may have been to prevent
> recursion bugs.
>
> >
> > It sounds like we shouldn't be holding skt_sem when we wait for userspace
> > to reply to the ejection request.
>
> The situation is rather complicated. pcmcia_eject_card itself has to hold
> skt_sem to ensure the socket state remains correct. We could always release
> the semaphore while sending the event, and then grab it again. Of course we
> would have to check if the socket is still present a second time in the same
> function. How does this look (untested)?
Sorry, the last patch was incorrect.
--- a/drivers/pcmcia/cs.c 2004-08-05 21:28:48.000000000 +0000
+++ b/drivers/pcmcia/cs.c 2004-08-06 10:42:34.000000000 +0000
@@ -2056,9 +2056,14 @@
break;
}
+ up(&skt->skt_sem);
ret = send_event(skt, CS_EVENT_EJECTION_REQUEST, CS_EVENT_PRI_LOW);
- if (ret != 0) {
- ret = -EINVAL;
+ if (ret != 0)
+ return -EINVAL;
+ down(&skt->skt_sem);
+
+ if (!(skt->state & SOCKET_PRESENT)) {
+ ret = -ENODEV;
break;
}
next prev parent reply other threads:[~2004-08-06 14:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-05 22:28 [PATCH] pcmcia driver model support [4/5] Adam Belay
2004-08-06 10:43 ` Russell King
2004-08-06 10:35 ` Adam Belay
2004-08-06 10:44 ` Adam Belay [this message]
2004-08-23 18:05 ` Russell King
2004-08-23 18:16 ` Russell King
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=20040806104433.GH11641@neo.rr.com \
--to=ambx1@neo.rr.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pcmcia@lists.infradead.org \
--cc=linux@dominikbrodowski.de \
--cc=rml@ximian.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