> On Tue, 20 Feb 2007 16:08:11 +0100 "Markus Rechberger" <[EMAIL PROTECTED]> 
> wrote:
> following patch prevents a mutex/semaphore deadlock within the pcmcia
> framework when ejecting devices multiple times using pccardctl eject.
> 
> For some more details see:
> http://lkml.org/lkml/2007/2/19/58
> 
> --- a/drivers/pcmcia/cs.c
> +++ b/drivers/pcmcia/cs.c
> @@ -856,7 +856,8 @@ int pcmcia_eject_card(struct pcmcia_socket *skt)
>      
>       cs_dbg(skt, 1, "user eject request\n");
>  
> -     mutex_lock(&skt->skt_mutex);
> +     if (!mutex_trylock(&skt->skt_mutex)) 
> +             return -EAGAIN;
>       do {
>               if (!(skt->state & SOCKET_PRESENT)) {
>                       ret = -ENODEV;
> index 18e111e..b9d3440 100644
> --- a/drivers/pcmcia/ds.c
> +++ b/drivers/pcmcia/ds.c
> @@ -1100,7 +1100,9 @@ static ssize_t pcmcia_store_allow_func_id_match(struct 
> device *dev,
>       if (!count)
>               return -EINVAL;
>  
> -     mutex_lock(&p_dev->socket->skt_mutex);
> +     if (!mutex_trylock(&p_dev->socket->skt_mutex)) 
> +             return -EAGAIN;
> +
>       p_dev->allow_func_id_match = 1;
>       mutex_unlock(&p_dev->socket->skt_mutex);

That looks rather hacky.  I'll queue it up to bug Dominik with, but
hopeully we'll come up with some fix which avoids the trylocks.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to