* [PATCH 0/3] um: Remove userspace_pid[]
@ 2025-07-11 5:27 Tiwei Bie
2025-07-11 5:27 ` [PATCH 1/3] um: Use err consistently in userspace() Tiwei Bie
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Tiwei Bie @ 2025-07-11 5:27 UTC (permalink / raw)
To: richard, anton.ivanov, johannes; +Cc: linux-um, tiwei.btw, tiwei.bie
From: Tiwei Bie <tiwei.btw@antgroup.com>
Tiwei Bie (3):
um: Use err consistently in userspace()
um: Remove the pid parameter of handle_trap()
um: Stop tracking stub's PID via userspace_pid[]
arch/um/include/asm/mmu_context.h | 9 +-------
arch/um/include/shared/skas/mm_id.h | 2 --
arch/um/kernel/exec.c | 2 --
arch/um/os-Linux/skas/process.c | 33 ++++++++++++-----------------
4 files changed, 15 insertions(+), 31 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] um: Use err consistently in userspace()
2025-07-11 5:27 [PATCH 0/3] um: Remove userspace_pid[] Tiwei Bie
@ 2025-07-11 5:27 ` Tiwei Bie
2025-07-11 5:27 ` [PATCH 2/3] um: Remove the pid parameter of handle_trap() Tiwei Bie
2025-07-11 5:27 ` [PATCH 3/3] um: Stop tracking stub's PID via userspace_pid[] Tiwei Bie
2 siblings, 0 replies; 4+ messages in thread
From: Tiwei Bie @ 2025-07-11 5:27 UTC (permalink / raw)
To: richard, anton.ivanov, johannes; +Cc: linux-um, tiwei.btw, tiwei.bie
From: Tiwei Bie <tiwei.btw@antgroup.com>
Avoid declaring a new variable 'ret' inside the 'if (using_seccomp)'
block, as the existing 'err' variable declared at the top of the
function already serves the same purpose.
Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com>
---
arch/um/os-Linux/skas/process.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index e42ffac23e3c..2de7fbc6eb23 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -592,12 +592,11 @@ void userspace(struct uml_pt_regs *regs)
if (using_seccomp) {
struct mm_id *mm_id = current_mm_id();
struct stub_data *proc_data = (void *) mm_id->stack;
- int ret;
- ret = set_stub_state(regs, proc_data, singlestepping());
- if (ret) {
+ err = set_stub_state(regs, proc_data, singlestepping());
+ if (err) {
printk(UM_KERN_ERR "%s - failed to set regs: %d",
- __func__, ret);
+ __func__, err);
fatal_sigsegv();
}
@@ -623,10 +622,10 @@ void userspace(struct uml_pt_regs *regs)
mm_id->syscall_data_len = 0;
mm_id->syscall_fd_num = 0;
- ret = get_stub_state(regs, proc_data, NULL);
- if (ret) {
+ err = get_stub_state(regs, proc_data, NULL);
+ if (err) {
printk(UM_KERN_ERR "%s - failed to get regs: %d",
- __func__, ret);
+ __func__, err);
fatal_sigsegv();
}
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] um: Remove the pid parameter of handle_trap()
2025-07-11 5:27 [PATCH 0/3] um: Remove userspace_pid[] Tiwei Bie
2025-07-11 5:27 ` [PATCH 1/3] um: Use err consistently in userspace() Tiwei Bie
@ 2025-07-11 5:27 ` Tiwei Bie
2025-07-11 5:27 ` [PATCH 3/3] um: Stop tracking stub's PID via userspace_pid[] Tiwei Bie
2 siblings, 0 replies; 4+ messages in thread
From: Tiwei Bie @ 2025-07-11 5:27 UTC (permalink / raw)
To: richard, anton.ivanov, johannes; +Cc: linux-um, tiwei.btw, tiwei.bie
From: Tiwei Bie <tiwei.btw@antgroup.com>
It's no longer used. Remove it.
Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com>
---
arch/um/os-Linux/skas/process.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index 2de7fbc6eb23..e90a0658bba8 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -267,7 +267,7 @@ static void get_skas_faultinfo(int pid, struct faultinfo *fi)
memcpy(fi, (void *)current_stub_stack(), sizeof(*fi));
}
-static void handle_trap(int pid, struct uml_pt_regs *regs)
+static void handle_trap(struct uml_pt_regs *regs)
{
if ((UPT_IP(regs) >= STUB_START) && (UPT_IP(regs) < STUB_END))
fatal_sigsegv();
@@ -755,7 +755,7 @@ void userspace(struct uml_pt_regs *regs)
handle_syscall(regs);
break;
case SIGTRAP + 0x80:
- handle_trap(pid, regs);
+ handle_trap(regs);
break;
case SIGTRAP:
relay_signal(SIGTRAP, (struct siginfo *)si, regs, NULL);
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] um: Stop tracking stub's PID via userspace_pid[]
2025-07-11 5:27 [PATCH 0/3] um: Remove userspace_pid[] Tiwei Bie
2025-07-11 5:27 ` [PATCH 1/3] um: Use err consistently in userspace() Tiwei Bie
2025-07-11 5:27 ` [PATCH 2/3] um: Remove the pid parameter of handle_trap() Tiwei Bie
@ 2025-07-11 5:27 ` Tiwei Bie
2 siblings, 0 replies; 4+ messages in thread
From: Tiwei Bie @ 2025-07-11 5:27 UTC (permalink / raw)
To: richard, anton.ivanov, johannes; +Cc: linux-um, tiwei.btw, tiwei.bie
From: Tiwei Bie <tiwei.btw@antgroup.com>
The PID of the stub process can be obtained from current_mm_id().
There is no need to track it via userspace_pid[]. Stop doing that
to simplify the code.
Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com>
---
arch/um/include/asm/mmu_context.h | 9 +--------
arch/um/include/shared/skas/mm_id.h | 2 --
arch/um/kernel/exec.c | 2 --
arch/um/os-Linux/skas/process.c | 16 ++++++----------
4 files changed, 7 insertions(+), 22 deletions(-)
diff --git a/arch/um/include/asm/mmu_context.h b/arch/um/include/asm/mmu_context.h
index 23dcc914d44e..0bbb24868557 100644
--- a/arch/um/include/asm/mmu_context.h
+++ b/arch/um/include/asm/mmu_context.h
@@ -16,11 +16,6 @@
#define activate_mm activate_mm
static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
{
- /*
- * This is called by fs/exec.c and sys_unshare()
- * when the new ->mm is used for the first time.
- */
- __switch_mm(&new->context.id);
}
static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
@@ -28,11 +23,9 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
{
unsigned cpu = smp_processor_id();
- if(prev != next){
+ if (prev != next) {
cpumask_clear_cpu(cpu, mm_cpumask(prev));
cpumask_set_cpu(cpu, mm_cpumask(next));
- if(next != &init_mm)
- __switch_mm(&next->context.id);
}
}
diff --git a/arch/um/include/shared/skas/mm_id.h b/arch/um/include/shared/skas/mm_id.h
index 89df9a55fbea..4f977ef5dda5 100644
--- a/arch/um/include/shared/skas/mm_id.h
+++ b/arch/um/include/shared/skas/mm_id.h
@@ -19,8 +19,6 @@ struct mm_id {
int syscall_fd_map[STUB_MAX_FDS];
};
-void __switch_mm(struct mm_id *mm_idp);
-
void notify_mm_kill(int pid);
#endif
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index cb8b5cd9285c..13812fa97eee 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -26,8 +26,6 @@ void flush_thread(void)
get_safe_registers(current_pt_regs()->regs.gp,
current_pt_regs()->regs.fp);
-
- __switch_mm(¤t->mm->context.id);
}
void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp)
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index e90a0658bba8..702ff2aeb32a 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -434,7 +434,6 @@ static int __init init_stub_exe_fd(void)
__initcall(init_stub_exe_fd);
int using_seccomp;
-int userspace_pid[NR_CPUS];
/**
* start_userspace() - prepare a new userspace process
@@ -553,7 +552,7 @@ extern unsigned long tt_extra_sched_jiffies;
void userspace(struct uml_pt_regs *regs)
{
- int err, status, op, pid = userspace_pid[0];
+ int err, status, op;
siginfo_t si_ptrace;
siginfo_t *si;
int sig;
@@ -562,6 +561,8 @@ void userspace(struct uml_pt_regs *regs)
interrupt_end();
while (1) {
+ struct mm_id *mm_id = current_mm_id();
+
/*
* When we are in time-travel mode, userspace can theoretically
* do a *lot* of work without being scheduled. The problem with
@@ -590,7 +591,6 @@ void userspace(struct uml_pt_regs *regs)
current_mm_sync();
if (using_seccomp) {
- struct mm_id *mm_id = current_mm_id();
struct stub_data *proc_data = (void *) mm_id->stack;
err = set_stub_state(regs, proc_data, singlestepping());
@@ -644,8 +644,10 @@ void userspace(struct uml_pt_regs *regs)
GET_FAULTINFO_FROM_MC(regs->faultinfo, mcontext);
}
} else {
+ int pid = mm_id->pid;
+
/* Flush out any pending syscalls */
- err = syscall_stub_flush(current_mm_id());
+ err = syscall_stub_flush(mm_id);
if (err) {
if (err == -ENOMEM)
report_enomem();
@@ -776,7 +778,6 @@ void userspace(struct uml_pt_regs *regs)
__func__, sig);
fatal_sigsegv();
}
- pid = userspace_pid[0];
interrupt_end();
/* Avoid -ERESTARTSYS handling in host */
@@ -901,8 +902,3 @@ void reboot_skas(void)
block_signals_trace();
UML_LONGJMP(&initial_jmpbuf, noreboot ? INIT_JMP_HALT : INIT_JMP_REBOOT);
}
-
-void __switch_mm(struct mm_id *mm_idp)
-{
- userspace_pid[0] = mm_idp->pid;
-}
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-07-11 5:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-11 5:27 [PATCH 0/3] um: Remove userspace_pid[] Tiwei Bie
2025-07-11 5:27 ` [PATCH 1/3] um: Use err consistently in userspace() Tiwei Bie
2025-07-11 5:27 ` [PATCH 2/3] um: Remove the pid parameter of handle_trap() Tiwei Bie
2025-07-11 5:27 ` [PATCH 3/3] um: Stop tracking stub's PID via userspace_pid[] Tiwei Bie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).