2019-11-26 11:55:59

by Wangshaobo (bobo)

[permalink] [raw]
Subject: [PATCH] sys_personality: Streamline code in sys_personality()

SYSCALL_DEFINE1 in kernel/exec_domain.c looks like verbose,
ksys_personality() can make it more concise.

Signed-off-by: Wang ShaoBo <[email protected]>
---
kernel/exec_domain.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c
index 33f07c5f2515..f7a0512ddc23 100644
--- a/kernel/exec_domain.c
+++ b/kernel/exec_domain.c
@@ -37,10 +37,5 @@ module_init(proc_execdomains_init);

SYSCALL_DEFINE1(personality, unsigned int, personality)
{
- unsigned int old = current->personality;
-
- if (personality != 0xffffffff)
- set_personality(personality);
-
- return old;
+ return ksys_personality(personality);
}
--
2.20.1


2019-11-26 12:42:43

by Mark Rutland

[permalink] [raw]
Subject: Re: [PATCH] sys_personality: Streamline code in sys_personality()

On Tue, Nov 26, 2019 at 05:40:45PM +0800, Wang ShaoBo wrote:
> SYSCALL_DEFINE1 in kernel/exec_domain.c looks like verbose,
> ksys_personality() can make it more concise.
>
> Signed-off-by: Wang ShaoBo <[email protected]>

FWIW, this looks fine to me:

Acked-by: Mark Rutland <[email protected]>

I'm not sure why I didn't do this initially; adding Christoph in case he
has any comments.

Mark.

> ---
> kernel/exec_domain.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c
> index 33f07c5f2515..f7a0512ddc23 100644
> --- a/kernel/exec_domain.c
> +++ b/kernel/exec_domain.c
> @@ -37,10 +37,5 @@ module_init(proc_execdomains_init);
>
> SYSCALL_DEFINE1(personality, unsigned int, personality)
> {
> - unsigned int old = current->personality;
> -
> - if (personality != 0xffffffff)
> - set_personality(personality);
> -
> - return old;
> + return ksys_personality(personality);
> }
> --
> 2.20.1
>

2019-11-27 09:44:47

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] sys_personality: Streamline code in sys_personality()

On Tue, Nov 26, 2019 at 05:40:45PM +0800, Wang ShaoBo wrote:
> SYSCALL_DEFINE1 in kernel/exec_domain.c looks like verbose,
> ksys_personality() can make it more concise.

What do you try to say with this sentence? I can't really parse it.

> --- a/kernel/exec_domain.c
> +++ b/kernel/exec_domain.c
> @@ -37,10 +37,5 @@ module_init(proc_execdomains_init);
>
> SYSCALL_DEFINE1(personality, unsigned int, personality)
> {
> - unsigned int old = current->personality;
> -
> - if (personality != 0xffffffff)
> - set_personality(personality);
> -
> - return old;
> + return ksys_personality(personality);

This looks ok, but I'd much rather just kill ksys_personality and add
an optional arch hook to reject personality settings for the arm64
special case.