1From: Dan Gohman <dev@sunfishcode.online> 2Subject: [PATCH] Avoid storing unexpected values for `SO_RCVTIMEO_NEW` etc. 3 4This issue is reported upstream [here]. 5 6[here]: https://gitlab.com/qemu-project/qemu/-/issues/885 7 8--- 9 linux-user/generic/sockbits.h | 2 ++ 10 linux-user/mips/sockbits.h | 2 ++ 11 linux-user/sparc/sockbits.h | 2 ++ 12 linux-user/syscall.c | 6 ++++++ 13 4 files changed, 12 insertions(+) 14 15diff --git a/linux-user/generic/sockbits.h b/linux-user/generic/sockbits.h 16index b3b4a8e44c..f95747e3cc 100644 17--- a/linux-user/generic/sockbits.h 18+++ b/linux-user/generic/sockbits.h 19@@ -36,6 +36,8 @@ 20 #define TARGET_SO_SNDLOWAT 19 21 #define TARGET_SO_RCVTIMEO 20 22 #define TARGET_SO_SNDTIMEO 21 23+#define TARGET_SO_RCVTIMEO_NEW 66 24+#define TARGET_SO_SNDTIMEO_NEW 67 25 26 /* Security levels - as per NRL IPv6 - don't actually do anything */ 27 #define TARGET_SO_SECURITY_AUTHENTICATION 22 28diff --git a/linux-user/mips/sockbits.h b/linux-user/mips/sockbits.h 29index 562cad88e2..4d411f7b61 100644 30--- a/linux-user/mips/sockbits.h 31+++ b/linux-user/mips/sockbits.h 32@@ -39,6 +39,8 @@ 33 #define TARGET_SO_RCVLOWAT 0x1004 /* receive low-water mark */ 34 #define TARGET_SO_SNDTIMEO 0x1005 /* send timeout */ 35 #define TARGET_SO_RCVTIMEO 0x1006 /* receive timeout */ 36+#define TARGET_SO_RCVTIMEO_NEW 66 37+#define TARGET_SO_SNDTIMEO_NEW 67 38 #define TARGET_SO_ACCEPTCONN 0x1009 39 #define TARGET_SO_PROTOCOL 0x1028 /* protocol type */ 40 #define TARGET_SO_DOMAIN 0x1029 /* domain/socket family */ 41diff --git a/linux-user/sparc/sockbits.h b/linux-user/sparc/sockbits.h 42index 0a822e3e1f..8420ef9953 100644 43--- a/linux-user/sparc/sockbits.h 44+++ b/linux-user/sparc/sockbits.h 45@@ -26,6 +26,8 @@ 46 #define TARGET_SO_SNDLOWAT 0x1000 47 #define TARGET_SO_RCVTIMEO 0x2000 48 #define TARGET_SO_SNDTIMEO 0x4000 49+#define TARGET_SO_RCVTIMEO_NEW 68 50+#define TARGET_SO_SNDTIMEO_NEW 69 51 #define TARGET_SO_ACCEPTCONN 0x8000 52 53 #define TARGET_SO_SNDBUF 0x1001 54diff --git a/linux-user/syscall.c b/linux-user/syscall.c 55index a8eae3c4ac..8326e03a19 100644 56--- a/linux-user/syscall.c 57+++ b/linux-user/syscall.c 58@@ -2348,6 +2348,9 @@ set_timeout: 59 case TARGET_SO_SNDTIMEO: 60 optname = SO_SNDTIMEO; 61 goto set_timeout; 62+ case TARGET_SO_RCVTIMEO_NEW: 63+ case TARGET_SO_SNDTIMEO_NEW: 64+ return -TARGET_ENOPROTOOPT; 65 case TARGET_SO_ATTACH_FILTER: 66 { 67 struct target_sock_fprog *tfprog; 68@@ -2595,6 +2598,9 @@ get_timeout: 69 case TARGET_SO_SNDTIMEO: 70 optname = SO_SNDTIMEO; 71 goto get_timeout; 72+ case TARGET_SO_RCVTIMEO_NEW: 73+ case TARGET_SO_SNDTIMEO_NEW: 74+ return -TARGET_ENOPROTOOPT; 75 case TARGET_SO_PEERCRED: { 76 struct ucred cr; 77 socklen_t crlen; 78-- 792.32.0 80 81