bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] libpager: fix potential deadlock


From: Samuel Thibault
Subject: Re: [PATCH 2/2] libpager: fix potential deadlock
Date: Tue, 25 Mar 2014 02:43:20 +0100
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Justus Winter, le Fri 21 Mar 2014 13:57:53 +0100, a écrit :
> This patch releases the interlock before doing an rpc call, analogous
> to 901c61a1d25e7c8963e51012760a82730eda1910.
> 
> * libpager/pager-attr.c (pager_change_attributes): Release interlock
> before calling memory_object_change_attributes, to let the callbacks
> take it.

Ack.

> ---
>  libpager/pager-attr.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/libpager/pager-attr.c b/libpager/pager-attr.c
> index 47da12a..ad1560e 100644
> --- a/libpager/pager-attr.c
> +++ b/libpager/pager-attr.c
> @@ -77,11 +77,14 @@ pager_change_attributes (struct pager *p,
>       }
>      }      
>  
> +  pthread_mutex_unlock (&p->interlock);
>    memory_object_change_attributes (p->memobjcntl, may_cache, copy_strategy,
>                                  wait ? p->port.port_right : MACH_PORT_NULL);
>    
>    if (wait)
>      {
> +      pthread_mutex_lock (&p->interlock);
> +
>        while (ar->attrs_pending)
>       pthread_cond_wait (&p->wakeup, &p->interlock);
>  
> @@ -92,7 +95,7 @@ pager_change_attributes (struct pager *p,
>           ar->next->prevp = ar->prevp;
>         free (ar);
>       }
> +
> +      pthread_mutex_unlock (&p->interlock);
>      }
> -  
> -  pthread_mutex_unlock (&p->interlock);
>  }
> -- 
> 1.9.0
> 

-- 
Samuel
 RR> Ce que je cherche à démontrer, c'est qu'il est injuste de faire
 RR> l'amalgame entre du bulk mail et du courrier non-solicité très ciblé
 un suppositoire non reclamé, meme tres bien ciblé, reste un suppositoire.
 -+-OS in : Guide du Neuneu d'Usenet - Plein le cul de la pub à neuneu -+-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]