bug-hurd
[Top][All Lists]
Advanced

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

Re: Reauthentication implementation flaw due to EINTR


From: Samuel Thibault
Subject: Re: Reauthentication implementation flaw due to EINTR
Date: Sat, 26 Dec 2009 18:56:48 +0100
User-agent: Mutt/1.5.12-2006-07-14

Carl Fredrik Hammar, le Sat 26 Dec 2009 18:47:51 +0100, a écrit :
> Is it the code below from S_auth_server_authenticate the problem?
> 
>   /* Store the new port and wait for the user RPC to wake us up.  */
>   s.passthrough = newport;
>   condition_init (&s.wakeup);
>   ports_interrupt_self_on_port_death (serverauth, rendezvous);
>   if (hurd_condition_wait (&s.wakeup, &pending_lock))
>     /* We were interrupted; remove our record.  */
>     {
>       hurd_ihash_locp_remove (&pending_servers, s.locp);
>       err = EINTR;
>     }
> 
> That is, does hurd_condition_wait get canceled even though the condition
> was signaled before it was canceled?

There is this issue as well, which I have fixed already in commit
041baa80 (and indeed seen cases where it helped), but that's not enough,
because not only auth gets EINTR here and can fix things, but ext2fs
also gets an EINTR but can't able to restart the call in iohelp_reauth
since the rendez-vous port is dead and thus gets EINVAL.

Samuel




reply via email to

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