On Donnerstag, 21. April 2022 18:36:31 CEST Greg Kurz wrote: > On Thu, 21 Apr 2022 17:07:43 +0200 > > Christian Schoenebeck <qemu_...@crudebyte.com> wrote: > > mknod() on macOS does not support creating sockets, so divert to > > call sequence socket(), bind() and chmod() respectively if S_IFSOCK > > was passed with mode argument. > > > > Link: https://lore.kernel.org/qemu-devel/17933734.zYzKuhC07K@silver/ > > Signed-off-by: Christian Schoenebeck <qemu_...@crudebyte.com> > > Reviewed-by: Will Cohen <wwco...@gmail.com> > > --- > > > > hw/9pfs/9p-util-darwin.c | 27 ++++++++++++++++++++++++++- > > 1 file changed, 26 insertions(+), 1 deletion(-) > > > > diff --git a/hw/9pfs/9p-util-darwin.c b/hw/9pfs/9p-util-darwin.c > > index e24d09763a..39308f2a45 100644 > > --- a/hw/9pfs/9p-util-darwin.c > > +++ b/hw/9pfs/9p-util-darwin.c > > @@ -74,6 +74,27 @@ int fsetxattrat_nofollow(int dirfd, const char > > *filename, const char *name,> > > */ > > > > #if defined CONFIG_PTHREAD_FCHDIR_NP > > > > +static int create_socket_file_at_cwd(const char *filename, mode_t mode) { > > + int fd, err; > > + struct sockaddr_un addr = { > > + .sun_family = AF_UNIX > > + }; > > + > > + fd = socket(PF_UNIX, SOCK_DGRAM, 0); > > + if (fd == -1) { > > + return fd; > > + } > > + snprintf(addr.sun_path, sizeof(addr.sun_path), "./%s", filename); > > + err = bind(fd, (struct sockaddr *) &addr, sizeof(addr)); > > + if (err == -1) { > > + goto out; > > + } > > + err = chmod(addr.sun_path, mode); > > +out: > > + close(fd); > > You need close_preserve_errno() here. > > Rest LGTM, so with that fixed, you can add: > > Reviewed-by: Greg Kurz <gr...@kaod.org>
Right, unlike patch 1, we might come from an error path here when closing. I'll just s/close/close_preserve_errno/ this on my end before queuing, without sending a v3, unless somebody finds something else in this series. Thanks! Best regards, Christian Schoenebeck