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>
This commit is contained in:
parent
fb90dea0cc
commit
ad16acfadb
@ -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>
|
||||
@ -865,8 +864,6 @@ linux64_elf_modevent(module_t mod, int type, void *data)
|
||||
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");
|
||||
@ -887,7 +884,6 @@ linux64_elf_modevent(module_t mod, int type, void *data)
|
||||
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
|
||||
|
@ -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>
|
||||
@ -1023,8 +1022,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");
|
||||
@ -1045,7 +1042,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
|
||||
|
@ -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>
|
||||
@ -494,8 +493,6 @@ linux64_elf_modevent(module_t mod, int type, void *data)
|
||||
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");
|
||||
@ -515,7 +512,6 @@ linux64_elf_modevent(module_t mod, int type, void *data)
|
||||
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
|
||||
|
@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <compat/linux/linux_util.h>
|
||||
|
||||
struct futex_list futex_list;
|
||||
struct mtx futex_mtx; /* protects the futex list */
|
||||
|
||||
CTASSERT(LINUX_IFNAMSIZ == IFNAMSIZ);
|
||||
|
||||
|
@ -141,5 +141,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_ */
|
||||
|
@ -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 *data)
|
||||
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);
|
||||
|
@ -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, \
|
||||
|
@ -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 */
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user