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
signature.asc
Description: PGP signature
_______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
