* [PATCH] kernel: Optimize unused integer return values
@ 2022-04-27 7:34 Li kunyu
2022-04-27 7:47 ` Marco Elver
2022-04-28 1:59 ` kernel test robot
0 siblings, 2 replies; 4+ messages in thread
From: Li kunyu @ 2022-04-27 7:34 UTC (permalink / raw)
To: ebiederm, keescook, tglx, elver; +Cc: oleg, legion, linux-kernel, Li kunyu
Optimize unused integer return values
Signed-off-by: Li kunyu <kunyu@nfschina.com>
---
kernel/signal.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/kernel/signal.c b/kernel/signal.c
index 30cd1ca43bcd..ae58a966c8de 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -3464,7 +3464,7 @@ int __copy_siginfo_to_user32(struct compat_siginfo __user *to,
return 0;
}
-static int post_copy_siginfo_from_user32(kernel_siginfo_t *to,
+static void post_copy_siginfo_from_user32(kernel_siginfo_t *to,
const struct compat_siginfo *from)
{
clear_siginfo(to);
@@ -3548,7 +3548,8 @@ static int __copy_siginfo_from_user32(int signo, struct kernel_siginfo *to,
return -EFAULT;
from.si_signo = signo;
- return post_copy_siginfo_from_user32(to, &from);
+ post_copy_siginfo_from_user32(to, &from);
+ return 0;
}
int copy_siginfo_from_user32(struct kernel_siginfo *to,
@@ -3559,7 +3560,8 @@ int copy_siginfo_from_user32(struct kernel_siginfo *to,
if (copy_from_user(&from, ufrom, sizeof(struct compat_siginfo)))
return -EFAULT;
- return post_copy_siginfo_from_user32(to, &from);
+ post_copy_siginfo_from_user32(to, &from);
+ return 0;
}
#endif /* CONFIG_COMPAT */
--
2.18.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] kernel: Optimize unused integer return values
2022-04-27 7:34 [PATCH] kernel: Optimize unused integer return values Li kunyu
@ 2022-04-27 7:47 ` Marco Elver
2022-04-28 1:59 ` kernel test robot
1 sibling, 0 replies; 4+ messages in thread
From: Marco Elver @ 2022-04-27 7:47 UTC (permalink / raw)
To: Li kunyu; +Cc: ebiederm, keescook, tglx, oleg, legion, linux-kernel
On Wed, 27 Apr 2022 at 09:36, Li kunyu <kunyu@nfschina.com> wrote:
>
> Optimize unused integer return values
What is this optimizing?
Stylistically the current versions are consistent, and if in future
post_copy_siginfo_from_user32()'s implementation is changed to return
more than 0, it is easy to do.
Code-generation wise, this is de-optimizing and making code slower! In
particular, with what you've done the compiler can no longer tail-call
the functions. https://godbolt.org/z/j68MhjdzT
> Signed-off-by: Li kunyu <kunyu@nfschina.com>
> ---
> kernel/signal.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/signal.c b/kernel/signal.c
> index 30cd1ca43bcd..ae58a966c8de 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -3464,7 +3464,7 @@ int __copy_siginfo_to_user32(struct compat_siginfo __user *to,
> return 0;
> }
>
> -static int post_copy_siginfo_from_user32(kernel_siginfo_t *to,
> +static void post_copy_siginfo_from_user32(kernel_siginfo_t *to,
> const struct compat_siginfo *from)
> {
> clear_siginfo(to);
> @@ -3548,7 +3548,8 @@ static int __copy_siginfo_from_user32(int signo, struct kernel_siginfo *to,
> return -EFAULT;
>
> from.si_signo = signo;
> - return post_copy_siginfo_from_user32(to, &from);
> + post_copy_siginfo_from_user32(to, &from);
> + return 0;
> }
>
> int copy_siginfo_from_user32(struct kernel_siginfo *to,
> @@ -3559,7 +3560,8 @@ int copy_siginfo_from_user32(struct kernel_siginfo *to,
> if (copy_from_user(&from, ufrom, sizeof(struct compat_siginfo)))
> return -EFAULT;
>
> - return post_copy_siginfo_from_user32(to, &from);
> + post_copy_siginfo_from_user32(to, &from);
> + return 0;
> }
> #endif /* CONFIG_COMPAT */
>
> --
> 2.18.2
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] kernel: Optimize unused integer return values
2022-04-27 7:34 [PATCH] kernel: Optimize unused integer return values Li kunyu
2022-04-27 7:47 ` Marco Elver
@ 2022-04-28 1:59 ` kernel test robot
1 sibling, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-04-28 1:59 UTC (permalink / raw)
To: Li kunyu, ebiederm, keescook, tglx, elver
Cc: llvm, kbuild-all, oleg, legion, linux-kernel, Li kunyu
Hi Li,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on kees/for-next/pstore]
[also build test ERROR on linus/master linux/master v5.18-rc4 next-20220427]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/intel-lab-lkp/linux/commits/Li-kunyu/kernel-Optimize-unused-integer-return-values/20220427-153840
base: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
config: x86_64-randconfig-a016 (https://download.01.org/0day-ci/archive/20220428/202204280331.Wzldxt2P-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 1cddcfdc3c683b393df1a5c9063252eb60e52818)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/ddb369ae612f4391ae754aca94dec2ffc0ea68aa
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Li-kunyu/kernel-Optimize-unused-integer-return-values/20220427-153840
git checkout ddb369ae612f4391ae754aca94dec2ffc0ea68aa
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> kernel/signal.c:3536:2: error: void function 'post_copy_siginfo_from_user32' should not return a value [-Wreturn-type]
return 0;
^ ~
1 error generated.
vim +/post_copy_siginfo_from_user32 +3536 kernel/signal.c
ea64d5acc8f033 Eric W. Biederman 2018-01-15 3463
ddb369ae612f43 Li kunyu 2022-04-27 3464 static void post_copy_siginfo_from_user32(kernel_siginfo_t *to,
601d5abfeaf244 Eric W. Biederman 2018-10-05 3465 const struct compat_siginfo *from)
212a36a17efe4d Eric W. Biederman 2017-07-31 3466 {
212a36a17efe4d Eric W. Biederman 2017-07-31 3467 clear_siginfo(to);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3468 to->si_signo = from->si_signo;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3469 to->si_errno = from->si_errno;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3470 to->si_code = from->si_code;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3471 switch(siginfo_layout(from->si_signo, from->si_code)) {
212a36a17efe4d Eric W. Biederman 2017-07-31 3472 case SIL_KILL:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3473 to->si_pid = from->si_pid;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3474 to->si_uid = from->si_uid;
212a36a17efe4d Eric W. Biederman 2017-07-31 3475 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3476 case SIL_TIMER:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3477 to->si_tid = from->si_tid;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3478 to->si_overrun = from->si_overrun;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3479 to->si_int = from->si_int;
212a36a17efe4d Eric W. Biederman 2017-07-31 3480 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3481 case SIL_POLL:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3482 to->si_band = from->si_band;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3483 to->si_fd = from->si_fd;
212a36a17efe4d Eric W. Biederman 2017-07-31 3484 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3485 case SIL_FAULT:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3486 to->si_addr = compat_ptr(from->si_addr);
9abcabe3111811 Eric W. Biederman 2021-04-30 3487 break;
9abcabe3111811 Eric W. Biederman 2021-04-30 3488 case SIL_FAULT_TRAPNO:
9abcabe3111811 Eric W. Biederman 2021-04-30 3489 to->si_addr = compat_ptr(from->si_addr);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3490 to->si_trapno = from->si_trapno;
31931c93dfe05a Eric W. Biederman 2018-04-24 3491 break;
31931c93dfe05a Eric W. Biederman 2018-04-24 3492 case SIL_FAULT_MCEERR:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3493 to->si_addr = compat_ptr(from->si_addr);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3494 to->si_addr_lsb = from->si_addr_lsb;
31931c93dfe05a Eric W. Biederman 2018-04-24 3495 break;
31931c93dfe05a Eric W. Biederman 2018-04-24 3496 case SIL_FAULT_BNDERR:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3497 to->si_addr = compat_ptr(from->si_addr);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3498 to->si_lower = compat_ptr(from->si_lower);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3499 to->si_upper = compat_ptr(from->si_upper);
31931c93dfe05a Eric W. Biederman 2018-04-24 3500 break;
31931c93dfe05a Eric W. Biederman 2018-04-24 3501 case SIL_FAULT_PKUERR:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3502 to->si_addr = compat_ptr(from->si_addr);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3503 to->si_pkey = from->si_pkey;
212a36a17efe4d Eric W. Biederman 2017-07-31 3504 break;
f4ac73023449e6 Eric W. Biederman 2021-04-30 3505 case SIL_FAULT_PERF_EVENT:
fb6cc127e0b6e6 Marco Elver 2021-04-08 3506 to->si_addr = compat_ptr(from->si_addr);
0683b53197b553 Eric W. Biederman 2021-05-02 3507 to->si_perf_data = from->si_perf_data;
0683b53197b553 Eric W. Biederman 2021-05-02 3508 to->si_perf_type = from->si_perf_type;
fb6cc127e0b6e6 Marco Elver 2021-04-08 3509 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3510 case SIL_CHLD:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3511 to->si_pid = from->si_pid;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3512 to->si_uid = from->si_uid;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3513 to->si_status = from->si_status;
212a36a17efe4d Eric W. Biederman 2017-07-31 3514 #ifdef CONFIG_X86_X32_ABI
212a36a17efe4d Eric W. Biederman 2017-07-31 3515 if (in_x32_syscall()) {
601d5abfeaf244 Eric W. Biederman 2018-10-05 3516 to->si_utime = from->_sifields._sigchld_x32._utime;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3517 to->si_stime = from->_sifields._sigchld_x32._stime;
212a36a17efe4d Eric W. Biederman 2017-07-31 3518 } else
212a36a17efe4d Eric W. Biederman 2017-07-31 3519 #endif
212a36a17efe4d Eric W. Biederman 2017-07-31 3520 {
601d5abfeaf244 Eric W. Biederman 2018-10-05 3521 to->si_utime = from->si_utime;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3522 to->si_stime = from->si_stime;
212a36a17efe4d Eric W. Biederman 2017-07-31 3523 }
212a36a17efe4d Eric W. Biederman 2017-07-31 3524 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3525 case SIL_RT:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3526 to->si_pid = from->si_pid;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3527 to->si_uid = from->si_uid;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3528 to->si_int = from->si_int;
212a36a17efe4d Eric W. Biederman 2017-07-31 3529 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3530 case SIL_SYS:
601d5abfeaf244 Eric W. Biederman 2018-10-05 3531 to->si_call_addr = compat_ptr(from->si_call_addr);
601d5abfeaf244 Eric W. Biederman 2018-10-05 3532 to->si_syscall = from->si_syscall;
601d5abfeaf244 Eric W. Biederman 2018-10-05 3533 to->si_arch = from->si_arch;
212a36a17efe4d Eric W. Biederman 2017-07-31 3534 break;
212a36a17efe4d Eric W. Biederman 2017-07-31 3535 }
212a36a17efe4d Eric W. Biederman 2017-07-31 @3536 return 0;
212a36a17efe4d Eric W. Biederman 2017-07-31 3537 }
601d5abfeaf244 Eric W. Biederman 2018-10-05 3538
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] kernel: Optimize unused integer return values
@ 2022-04-27 8:54 Li kunyu
0 siblings, 0 replies; 4+ messages in thread
From: Li kunyu @ 2022-04-27 8:54 UTC (permalink / raw)
To: elver; +Cc: ebiederm, keescook, tglx, oleg, legion, linux-kernel
Sorry, this patch is incomplete. I have the following ideas
post_copy_siginfo_from_User32 function can change the integer return value 0 to void return type, and its caller return value is based on it. Can the return type of related function be changed to void.
If you agree with this idea, I will resend the patc
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-04-28 2:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-27 7:34 [PATCH] kernel: Optimize unused integer return values Li kunyu
2022-04-27 7:47 ` Marco Elver
2022-04-28 1:59 ` kernel test robot
2022-04-27 8:54 Li kunyu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.