From fdd7609f10236df34c8d8ae2d6f2dae46e0e96cf Mon Sep 17 00:00:00 2001 From: Edward Tomasz Napierala Date: Fri, 5 Feb 2021 17:24:23 +0000 Subject: [PATCH] linux: fix handling of flags for 32 bit send(2) syscall Previously the flags were passed as-is, which could resulted in spurious EAGAIN returned for non-blocking sockets, which broke some Steam games. Approved by: re (gjb) PR: 248065 Reported By: Alex S Tested By: Alex S Reviewed By: emaste MFC After: 3 days Sponsored By: The FreeBSD Foundation (cherry picked from commit f6e8256a965d5b7a7d43034ea31b2430a3b51066) (cherry picked from commit 9d930fb09072d21464288df8c834cb8d0b760073) --- sys/compat/linux/linux_socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index 5bfcdbb8fd2..c723af9dfba 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -1178,7 +1178,7 @@ linux_send(struct thread *td, struct linux_send_args *args) bsd_args.s = args->s; bsd_args.buf = (caddr_t)PTRIN(args->msg); bsd_args.len = args->len; - bsd_args.flags = args->flags; + bsd_args.flags = linux_to_bsd_msg_flags(args->flags); bsd_args.to = NULL; bsd_args.tolen = 0; error = sys_sendto(td, &bsd_args); -- 2.45.0