svn commit: r364556 - in stable/12/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Aug 23 21:48:59 UTC 2020
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 at 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>
More information about the svn-src-stable-12
mailing list