|
Message-ID: <20201218193849.GA7530@voyager> Date: Fri, 18 Dec 2020 20:38:49 +0100 From: Markus Wichmann <nullplan@....net> To: musl@...ts.openwall.com Subject: Re: Musl on Cortex-M Devices On Wed, Dec 16, 2020 at 07:23:49PM -0500, Rich Felker wrote: > On Wed, Dec 16, 2020 at 06:43:15PM -0500, Jesse DeGuire wrote: > > diff --git a/src/thread/arm/__unmapself.s b/src/thread/arm/__unmapself.s > > index 29c2d07b..fe0406e3 100644 > > --- a/src/thread/arm/__unmapself.s > > +++ b/src/thread/arm/__unmapself.s > > @@ -3,7 +3,7 @@ > > .global __unmapself > > .type __unmapself,%function > > __unmapself: > > - mov r7,#91 > > + movs r7,#91 > > svc 0 > > - mov r7,#1 > > + movs r7,#1 > > svc 0 > > OK, but this file can't be used on nommu anyway. Instead the generic C > version has to be used. > Speaking of that (C) version, maybe someone should note down somewhere that it is only safe to call if simultaneous calls from other threads are precluded somehow. That function uses global variables, so if multiple threads call it at the same time, there will be blood (well, there will be clobbering in any case). Which is fulfilled at the moment: The only call site of __unmapself() is pthread_exit(), after getting the thread list lock. That is a global lock, so further threads also exitting would have to queue up there. But I think it is rather non-intuitive that the thread-list lock happens to also protect the global variables in __unmapself.c. And that is a property of the C version not shared by the assembler versions, which are all thread-safe. Also, why can't this be used on nommu? I thought the only differences between nommu and mmu were that you can't call mmap() except for MAP_ANON, and you can't call fork(). This merely runs munmap() on a MAP_ANON region, and exit(), and so does the C version, except the C version sets up its own stack to do so, in order to not saw off the branch it is sitting on. What am I missing? Ciao, Markus
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.