Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <455063b99060bfd0d01aff1666ebb3892e001256.camel@gmail.com>
Date: Fri, 31 Jan 2025 10:31:46 +0100
From: Daniele Personal <d.dario76@...il.com>
To: Florian Weimer <fweimer@...hat.com>, Rich Felker <dalias@...c.org>
Cc: musl@...ts.openwall.com
Subject: Re: pthread_mutex_t shared between processes with different
 pid namespaces

On Tue, 2025-01-28 at 19:24 +0100, Florian Weimer wrote:
> * Rich Felker:
> 
> > Yes, the pid namespace boundary is your problem. Process-shared
> > mutexes only work on the same logical system with a unique set of
> > thread identifiers. If you're trying to share them across different
> > pid namespaces, the same pid/tid may refer to different
> > processes/threads in different ones, and it's not usable as a mutex
> > ownership identity.

>From what I see, the problem seems to happen only in case of contention
of the mutex.

int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct
timespec *restrict at)
{
	if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
	    && !a_cas(&m->_m_lock, 0, EBUSY))
		return 0;

	int type = m->_m_type;
	int r, t, priv = (type & 128) ^ 128;

	r = __pthread_mutex_trylock(m);
	if (r != EBUSY) return r;

IIUC, if it is not locked, the __pthread_mutex_timedlock will acquire
it and return 0 (don't understand if with the first check or with the
__pthread_mutex_trylock) and everything works.

If instead it is locked the problem arises only inside the container.
If it was a pthread_mutex_lock it waits forever, if it was a timed lock
it exits after the timeout and you can retry.

Is this correct?

> 
> Is this required for implementing the unlock-if-not-owner error code
> on
> mutex unlock?

No, I don't see problems related to EOWNERDEAD.

> 
> By the way, there is a proposal to teach the kernel to rewrite the
> ownership list of task exit:
> 
>   [PATCH v2 0/4] futex: Drop ROBUST_LIST_LIMIT
>  
> <https://lore.kernel.org/linux-kernel/20250127202608.223864-1-andreal
> meid@...lia.com/>
> 
> I'm worried about the compatibility impact.
> 
> Thanks,
> Florian
> 

Thanks,
Daniele.

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.