This patch set currently places it in 9p-util only because 9p is the only place where this issue seems to have come up so far and we were wary of editing files too far afield, but I have no attachment to its specific location!
On Sun, Feb 6, 2022 at 4:21 PM Philippe Mathieu-Daudé <[email protected]> wrote: > On 6/2/22 21:07, Will Cohen wrote: > > From: Keno Fischer <[email protected]> > > > > Darwin does not support mknodat. However, to avoid race conditions > > with later setting the permissions, we must avoid using mknod on > > the full path instead. We could try to fchdir, but that would cause > > problems if multiple threads try to call mknodat at the same time. > > However, luckily there is a solution: Darwin includes a function > > that sets the cwd for the current thread only. > > This should suffice to use mknod safely. > > > > This function (pthread_fchdir_np) is protected by a check in > > meson in a patch later in tihs series. > > > > Signed-off-by: Keno Fischer <[email protected]> > > Signed-off-by: Michael Roitzsch <[email protected]> > > [Will Cohen: - Adjust coding style > > - Replace clang references with gcc > > - Note radar filed with Apple for missing syscall > > - Replace direct syscall with pthread_fchdir_np and > > adjust patch notes accordingly] > > Signed-off-by: Will Cohen <[email protected]> > > --- > > hw/9pfs/9p-local.c | 5 +++-- > > hw/9pfs/9p-util-darwin.c | 27 +++++++++++++++++++++++++++ > > hw/9pfs/9p-util-linux.c | 5 +++++ > > hw/9pfs/9p-util.h | 2 ++ > > 4 files changed, 37 insertions(+), 2 deletions(-) > > > diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h > > index 8e610ad224..f6fed963bf 100644 > > --- a/hw/9pfs/9p-util.h > > +++ b/hw/9pfs/9p-util.h > > @@ -97,6 +97,8 @@ ssize_t flistxattrat_nofollow(int dirfd, const char > *filename, > > ssize_t fremovexattrat_nofollow(int dirfd, const char *filename, > > const char *name); > > > > +int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t > dev); > > I think this belong to "osdep.h" & os-posix.c. >
