Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2020 21:48:57 +0000 (UTC)
From:      Edward Tomasz Napierala <trasz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r364556 - in stable/12/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux
Message-ID:  <202008232148.07NLmvZj073523@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: trasz
Date: Sun Aug 23 21:48:57 2020
New Revision: 364556
URL: https://svnweb.freebsd.org/changeset/base/364556

Log:
  MFC r353725 by yuripv:
  
  linux: futex_mtx should follow futex_list
  
  Move futex_mtx to linux_common.ko for amd64 and aarch64 along
  with respective list/mutex init/destroy.
  
  PR:		240989
  Reported by:	Alex S <iwtcex@gmail.com>

Modified:
  stable/12/sys/amd64/linux/linux_sysvec.c
  stable/12/sys/amd64/linux32/linux32_sysvec.c
  stable/12/sys/arm64/linux/linux_sysvec.c
  stable/12/sys/compat/linux/linux.c
  stable/12/sys/compat/linux/linux.h
  stable/12/sys/compat/linux/linux_common.c
  stable/12/sys/compat/linux/linux_futex.c
  stable/12/sys/compat/linux/linux_futex.h
  stable/12/sys/i386/linux/linux_sysvec.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/linux/linux_sysvec.c
==============================================================================
--- stable/12/sys/amd64/linux/linux_sysvec.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/amd64/linux/linux_sysvec.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -75,7 +75,6 @@ __FBSDID("$FreeBSD$");
 #include <amd64/linux/linux.h>
 #include <amd64/linux/linux_proto.h>
 #include <compat/linux/linux_emul.h>
-#include <compat/linux/linux_futex.h>
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_misc.h>
@@ -883,8 +882,6 @@ linux64_elf_modevent(module_t mod, int type, void *dat
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux_ioctl_register_handler(*lihp);
-			LIST_INIT(&futex_list);
-			mtx_init(&futex_mtx, "ftllk64", NULL, MTX_DEF);
 			stclohz = (stathz ? stathz : hz);
 			if (bootverbose)
 				printf("Linux x86-64 ELF exec handler installed\n");
@@ -905,7 +902,6 @@ linux64_elf_modevent(module_t mod, int type, void *dat
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux_ioctl_unregister_handler(*lihp);
-			mtx_destroy(&futex_mtx);
 			if (bootverbose)
 				printf("Linux ELF exec handler removed\n");
 		} else

Modified: stable/12/sys/amd64/linux32/linux32_sysvec.c
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_sysvec.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/amd64/linux32/linux32_sysvec.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -81,7 +81,6 @@ __FBSDID("$FreeBSD$");
 #include <amd64/linux32/linux.h>
 #include <amd64/linux32/linux32_proto.h>
 #include <compat/linux/linux_emul.h>
-#include <compat/linux/linux_futex.h>
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_misc.h>
@@ -1073,8 +1072,6 @@ linux_elf_modevent(module_t mod, int type, void *data)
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux32_ioctl_register_handler(*lihp);
-			LIST_INIT(&futex_list);
-			mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF);
 			stclohz = (stathz ? stathz : hz);
 			if (bootverbose)
 				printf("Linux ELF exec handler installed\n");
@@ -1095,7 +1092,6 @@ linux_elf_modevent(module_t mod, int type, void *data)
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux32_ioctl_unregister_handler(*lihp);
-			mtx_destroy(&futex_mtx);
 			if (bootverbose)
 				printf("Linux ELF exec handler removed\n");
 		} else

Modified: stable/12/sys/arm64/linux/linux_sysvec.c
==============================================================================
--- stable/12/sys/arm64/linux/linux_sysvec.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/arm64/linux/linux_sysvec.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$");
 #include <arm64/linux/linux_proto.h>
 #include <compat/linux/linux_dtrace.h>
 #include <compat/linux/linux_emul.h>
-#include <compat/linux/linux_futex.h>
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_misc.h>
@@ -503,8 +502,6 @@ linux64_elf_modevent(module_t mod, int type, void *dat
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux_ioctl_register_handler(*lihp);
-			LIST_INIT(&futex_list);
-			mtx_init(&futex_mtx, "ftllk64", NULL, MTX_DEF);
 			stclohz = (stathz ? stathz : hz);
 			if (bootverbose)
 				printf("Linux arm64 ELF exec handler installed\n");
@@ -524,7 +521,6 @@ linux64_elf_modevent(module_t mod, int type, void *dat
 		if (error == 0) {
 			SET_FOREACH(lihp, linux_ioctl_handler_set)
 				linux_ioctl_unregister_handler(*lihp);
-			mtx_destroy(&futex_mtx);
 			if (bootverbose)
 				printf("Linux ELF exec handler removed\n");
 		} else

Modified: stable/12/sys/compat/linux/linux.c
==============================================================================
--- stable/12/sys/compat/linux/linux.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/compat/linux/linux.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
 #include <compat/linux/linux_common.h>
 
 struct futex_list futex_list;
+struct mtx futex_mtx;			/* protects the futex list */
 
 CTASSERT(LINUX_IFNAMSIZ == IFNAMSIZ);
 

Modified: stable/12/sys/compat/linux/linux.h
==============================================================================
--- stable/12/sys/compat/linux/linux.h	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/compat/linux/linux.h	Sun Aug 23 21:48:57 2020	(r364556)
@@ -130,5 +130,6 @@ int linux_to_bsd_signal(int sig);
 int bsd_to_linux_signal(int sig);
 
 extern LIST_HEAD(futex_list, futex) futex_list;
+extern struct mtx futex_mtx;
 
 #endif /* _LINUX_MI_H_ */

Modified: stable/12/sys/compat/linux/linux_common.c
==============================================================================
--- stable/12/sys/compat/linux/linux_common.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/compat/linux/linux_common.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sx.h>
 #include <sys/sysctl.h>
 
+#include <compat/linux/linux.h>
 #include <compat/linux/linux_emul.h>
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
@@ -76,11 +77,14 @@ linux_common_modevent(module_t mod, int type, void *da
 		    linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY);
 		SET_FOREACH(ldhp, linux_device_handler_set)
 			linux_device_register_handler(*ldhp);
+		LIST_INIT(&futex_list);
+		mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF);
 		break;
 	case MOD_UNLOAD:
 		linux_osd_jail_deregister();
 		SET_FOREACH(ldhp, linux_device_handler_set)
 			linux_device_unregister_handler(*ldhp);
+		mtx_destroy(&futex_mtx);
 		EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag);
 		EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag);
 		EVENTHANDLER_DEREGISTER(thread_dtor, linux_thread_dtor_tag);

Modified: stable/12/sys/compat/linux/linux_futex.c
==============================================================================
--- stable/12/sys/compat/linux/linux_futex.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/compat/linux/linux_futex.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -224,7 +224,6 @@ struct futex {
 #define FUTEX_ASSERT_LOCKED(f)	mtx_assert(&(f)->f_lck, MA_OWNED)
 #define FUTEX_ASSERT_UNLOCKED(f) mtx_assert(&(f)->f_lck, MA_NOTOWNED)
 
-struct mtx futex_mtx;			/* protects the futex list */
 #define FUTEXES_LOCK		do { \
 				    mtx_lock(&futex_mtx); \
 				    LIN_SDT_PROBE1(locks, futex_mtx, \

Modified: stable/12/sys/compat/linux/linux_futex.h
==============================================================================
--- stable/12/sys/compat/linux/linux_futex.h	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/compat/linux/linux_futex.h	Sun Aug 23 21:48:57 2020	(r364556)
@@ -38,8 +38,6 @@
 #ifndef _LINUX_FUTEX_H
 #define _LINUX_FUTEX_H
 
-extern struct mtx futex_mtx;
-
 #define LINUX_FUTEX_WAIT		 0
 #define LINUX_FUTEX_WAKE		 1
 #define LINUX_FUTEX_FD			 2	/* unused */

Modified: stable/12/sys/i386/linux/linux_sysvec.c
==============================================================================
--- stable/12/sys/i386/linux/linux_sysvec.c	Sun Aug 23 21:46:48 2020	(r364555)
+++ stable/12/sys/i386/linux/linux_sysvec.c	Sun Aug 23 21:48:57 2020	(r364556)
@@ -67,7 +67,6 @@ __FBSDID("$FreeBSD$");
 #include <i386/linux/linux.h>
 #include <i386/linux/linux_proto.h>
 #include <compat/linux/linux_emul.h>
-#include <compat/linux/linux_futex.h>
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_misc.h>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202008232148.07NLmvZj073523>