On Wed, Oct 18, 2017 at 09:05:46AM -0500, Matt Hoosier wrote:
> On Wed, Oct 18, 2017 at 4:23 AM, Quentin Glidic
> <[email protected]> wrote:
> > +       fd = shm_open("/wayland-cursor-shared", O_CREAT | O_RDWR, 0);
> > +       shm_unlink("/wayland-cursor-shared");
> 
> This seems to be a departure from the anonymous behavior that
> mkstemp() previously offered. shm_open() says that it will open an
> existing shared-memory object if that pathname already exists. Isn't
> there a race between one thread doing shm_open() and a different
> thread doing shm_unlink() such that you could accidentally end up with
> two different filedescriptors pointing at the same SHM object?

On Linux I would recommend using memfd_create(2), which has all of the
guarantees you want.  You still need a fallback for Linux older than
3.17 and for other POSIX systems; shm_open(3) is fine for that but your
implementation is naive, you should generate a random name, fail if it
already exists, and retry with another name in that case.

Thanks,

-- 
Emmanuel Gil Peyrot

Attachment: signature.asc
Description: PGP signature

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to