Re: [PATCH v7 03/22] alpha: define remaining syscall_get_* functions

From: kbuild test robot
Date: Mon Jan 07 2019 - 03:26:17 EST


Hi Dmitry,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.0-rc1 next-20190103]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Dmitry-V-Levin/asm-generic-syscall-h-prepare-for-inclusion-by-other-files/20190107-115241
config: alpha-allmodconfig (attached as .config)
compiler: alpha-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=alpha

All warnings (new ones prefixed by >>):

In file included from arch/alpha/include/asm/syscall.h:6:0,
from include/linux/audit.h:214,
from net/bridge/netfilter/ebtables.c:29:
include/asm-generic/syscall.h:61:1: warning: 'syscall_rollback' declared 'static' but never defined [-Wunused-function]
syscall_rollback(struct task_struct *task, struct pt_regs *regs);
^~~~~~~~~~~~~~~~
include/asm-generic/syscall.h:106:1: warning: 'syscall_set_return_value' declared 'static' but never defined [-Wunused-function]
syscall_set_return_value(struct task_struct *task, struct pt_regs *regs,
^~~~~~~~~~~~~~~~~~~~~~~~
>> include/asm-generic/syscall.h:174:1: warning: '__syscall_set_arguments' used but never defined
__syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
^~~~~~~~~~~~~~~~~~~~~~~

vim +/__syscall_set_arguments +174 include/asm-generic/syscall.h

828c365c Roland McGrath 2008-07-25 43
828c365c Roland McGrath 2008-07-25 44 /**
828c365c Roland McGrath 2008-07-25 45 * syscall_rollback - roll back registers after an aborted system call
828c365c Roland McGrath 2008-07-25 46 * @task: task of interest, must be in system call exit tracing
828c365c Roland McGrath 2008-07-25 47 * @regs: task_pt_regs() of @task
828c365c Roland McGrath 2008-07-25 48 *
828c365c Roland McGrath 2008-07-25 49 * It's only valid to call this when @task is stopped for system
828c365c Roland McGrath 2008-07-25 50 * call exit tracing (due to TIF_SYSCALL_TRACE or TIF_SYSCALL_AUDIT),
828c365c Roland McGrath 2008-07-25 51 * after tracehook_report_syscall_entry() returned nonzero to prevent
828c365c Roland McGrath 2008-07-25 52 * the system call from taking place.
828c365c Roland McGrath 2008-07-25 53 *
828c365c Roland McGrath 2008-07-25 54 * This rolls back the register state in @regs so it's as if the
828c365c Roland McGrath 2008-07-25 55 * system call instruction was a no-op. The registers containing
828c365c Roland McGrath 2008-07-25 56 * the system call number and arguments are as they were before the
828c365c Roland McGrath 2008-07-25 57 * system call instruction. This may not be the same as what the
828c365c Roland McGrath 2008-07-25 58 * register state looked like at system call entry tracing.
828c365c Roland McGrath 2008-07-25 59 */
ac0321df Dmitry V. Levin 2019-01-07 60 static void
ac0321df Dmitry V. Levin 2019-01-07 @61 syscall_rollback(struct task_struct *task, struct pt_regs *regs);
828c365c Roland McGrath 2008-07-25 62
828c365c Roland McGrath 2008-07-25 63 /**
828c365c Roland McGrath 2008-07-25 64 * syscall_get_error - check result of traced system call
828c365c Roland McGrath 2008-07-25 65 * @task: task of interest, must be blocked
828c365c Roland McGrath 2008-07-25 66 * @regs: task_pt_regs() of @task
828c365c Roland McGrath 2008-07-25 67 *
828c365c Roland McGrath 2008-07-25 68 * Returns 0 if the system call succeeded, or -ERRORCODE if it failed.
828c365c Roland McGrath 2008-07-25 69 *
828c365c Roland McGrath 2008-07-25 70 * It's only valid to call this when @task is stopped for tracing on exit
828c365c Roland McGrath 2008-07-25 71 * from a system call, due to %TIF_SYSCALL_TRACE or %TIF_SYSCALL_AUDIT.
828c365c Roland McGrath 2008-07-25 72 */
ac0321df Dmitry V. Levin 2019-01-07 73 static long
ac0321df Dmitry V. Levin 2019-01-07 74 syscall_get_error(struct task_struct *task, struct pt_regs *regs);
828c365c Roland McGrath 2008-07-25 75
828c365c Roland McGrath 2008-07-25 76 /**
828c365c Roland McGrath 2008-07-25 77 * syscall_get_return_value - get the return value of a traced system call
828c365c Roland McGrath 2008-07-25 78 * @task: task of interest, must be blocked
828c365c Roland McGrath 2008-07-25 79 * @regs: task_pt_regs() of @task
828c365c Roland McGrath 2008-07-25 80 *
828c365c Roland McGrath 2008-07-25 81 * Returns the return value of the successful system call.
828c365c Roland McGrath 2008-07-25 82 * This value is meaningless if syscall_get_error() returned nonzero.
828c365c Roland McGrath 2008-07-25 83 *
828c365c Roland McGrath 2008-07-25 84 * It's only valid to call this when @task is stopped for tracing on exit
828c365c Roland McGrath 2008-07-25 85 * from a system call, due to %TIF_SYSCALL_TRACE or %TIF_SYSCALL_AUDIT.
828c365c Roland McGrath 2008-07-25 86 */
ac0321df Dmitry V. Levin 2019-01-07 87 static long
ac0321df Dmitry V. Levin 2019-01-07 88 syscall_get_return_value(struct task_struct *task, struct pt_regs *regs);
828c365c Roland McGrath 2008-07-25 89
828c365c Roland McGrath 2008-07-25 90 /**
828c365c Roland McGrath 2008-07-25 91 * syscall_set_return_value - change the return value of a traced system call
828c365c Roland McGrath 2008-07-25 92 * @task: task of interest, must be blocked
828c365c Roland McGrath 2008-07-25 93 * @regs: task_pt_regs() of @task
828c365c Roland McGrath 2008-07-25 94 * @error: negative error code, or zero to indicate success
828c365c Roland McGrath 2008-07-25 95 * @val: user return value if @error is zero
828c365c Roland McGrath 2008-07-25 96 *
828c365c Roland McGrath 2008-07-25 97 * This changes the results of the system call that user mode will see.
828c365c Roland McGrath 2008-07-25 98 * If @error is zero, the user sees a successful system call with a
828c365c Roland McGrath 2008-07-25 99 * return value of @val. If @error is nonzero, it's a negated errno
828c365c Roland McGrath 2008-07-25 100 * code; the user sees a failed system call with this errno code.
828c365c Roland McGrath 2008-07-25 101 *
828c365c Roland McGrath 2008-07-25 102 * It's only valid to call this when @task is stopped for tracing on exit
828c365c Roland McGrath 2008-07-25 103 * from a system call, due to %TIF_SYSCALL_TRACE or %TIF_SYSCALL_AUDIT.
828c365c Roland McGrath 2008-07-25 104 */
ac0321df Dmitry V. Levin 2019-01-07 105 static void
ac0321df Dmitry V. Levin 2019-01-07 106 syscall_set_return_value(struct task_struct *task, struct pt_regs *regs,
828c365c Roland McGrath 2008-07-25 107 int error, long val);
828c365c Roland McGrath 2008-07-25 108
828c365c Roland McGrath 2008-07-25 109 /**
828c365c Roland McGrath 2008-07-25 110 * syscall_get_arguments - extract system call parameter values
828c365c Roland McGrath 2008-07-25 111 * @task: task of interest, must be blocked
828c365c Roland McGrath 2008-07-25 112 * @regs: task_pt_regs() of @task
828c365c Roland McGrath 2008-07-25 113 * @i: argument index [0,5]
828c365c Roland McGrath 2008-07-25 114 * @n: number of arguments; n+i must be [1,6].
828c365c Roland McGrath 2008-07-25 115 * @args: array filled with argument values
828c365c Roland McGrath 2008-07-25 116 *
828c365c Roland McGrath 2008-07-25 117 * Fetches @n arguments to the system call starting with the @i'th argument
828c365c Roland McGrath 2008-07-25 118 * (from 0 through 5). Argument @i is stored in @args[0], and so on.
828c365c Roland McGrath 2008-07-25 119 * An arch inline version is probably optimal when @i and @n are constants.
828c365c Roland McGrath 2008-07-25 120 *
828c365c Roland McGrath 2008-07-25 121 * It's only valid to call this when @task is stopped for tracing on
828c365c Roland McGrath 2008-07-25 122 * entry to a system call, due to %TIF_SYSCALL_TRACE or %TIF_SYSCALL_AUDIT.
828c365c Roland McGrath 2008-07-25 123 * It's invalid to call this with @i + @n > 6; we only support system calls
828c365c Roland McGrath 2008-07-25 124 * taking up to 6 arguments.
5dcf7654 Dmitry V. Levin 2019-01-07 125 *
5dcf7654 Dmitry V. Levin 2019-01-07 126 * This function is a wrapper around arch-specific __syscall_get_arguments.
828c365c Roland McGrath 2008-07-25 127 */
ac0321df Dmitry V. Levin 2019-01-07 128 static void
5dcf7654 Dmitry V. Levin 2019-01-07 129 __syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
828c365c Roland McGrath 2008-07-25 130 unsigned int i, unsigned int n, unsigned long *args);
828c365c Roland McGrath 2008-07-25 131
5dcf7654 Dmitry V. Levin 2019-01-07 132 static inline void
5dcf7654 Dmitry V. Levin 2019-01-07 133 syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
5dcf7654 Dmitry V. Levin 2019-01-07 134 unsigned int i, unsigned int n, unsigned long *args)
5dcf7654 Dmitry V. Levin 2019-01-07 135 {
5dcf7654 Dmitry V. Levin 2019-01-07 136 /*
5dcf7654 Dmitry V. Levin 2019-01-07 137 * Ideally there should have been a BUILD_BUG_ON(i + n > 6)
5dcf7654 Dmitry V. Levin 2019-01-07 138 * instead of these checks because it is a "cannot happen"
5dcf7654 Dmitry V. Levin 2019-01-07 139 * kind of assertion.
5dcf7654 Dmitry V. Levin 2019-01-07 140 */
5dcf7654 Dmitry V. Levin 2019-01-07 141 if (WARN_ON_ONCE(i > 6)) {
5dcf7654 Dmitry V. Levin 2019-01-07 142 memset(args, 0, n * sizeof(args[0]));
5dcf7654 Dmitry V. Levin 2019-01-07 143 return;
5dcf7654 Dmitry V. Levin 2019-01-07 144 }
5dcf7654 Dmitry V. Levin 2019-01-07 145 if (WARN_ON_ONCE(n > 6 - i)) {
5dcf7654 Dmitry V. Levin 2019-01-07 146 unsigned int extra = n - (6 - i);
5dcf7654 Dmitry V. Levin 2019-01-07 147
5dcf7654 Dmitry V. Levin 2019-01-07 148 n = 6 - i;
5dcf7654 Dmitry V. Levin 2019-01-07 149 memset(&args[n], 0, extra * sizeof(args[0]));
5dcf7654 Dmitry V. Levin 2019-01-07 150 }
5dcf7654 Dmitry V. Levin 2019-01-07 151 __syscall_get_arguments(task, regs, i, n, args);
5dcf7654 Dmitry V. Levin 2019-01-07 152 }
5dcf7654 Dmitry V. Levin 2019-01-07 153
828c365c Roland McGrath 2008-07-25 154 /**
828c365c Roland McGrath 2008-07-25 155 * syscall_set_arguments - change system call parameter value
828c365c Roland McGrath 2008-07-25 156 * @task: task of interest, must be in system call entry tracing
828c365c Roland McGrath 2008-07-25 157 * @regs: task_pt_regs() of @task
828c365c Roland McGrath 2008-07-25 158 * @i: argument index [0,5]
828c365c Roland McGrath 2008-07-25 159 * @n: number of arguments; n+i must be [1,6].
828c365c Roland McGrath 2008-07-25 160 * @args: array of argument values to store
828c365c Roland McGrath 2008-07-25 161 *
828c365c Roland McGrath 2008-07-25 162 * Changes @n arguments to the system call starting with the @i'th argument.
22f30168 Roland McGrath 2008-09-05 163 * Argument @i gets value @args[0], and so on.
828c365c Roland McGrath 2008-07-25 164 * An arch inline version is probably optimal when @i and @n are constants.
828c365c Roland McGrath 2008-07-25 165 *
828c365c Roland McGrath 2008-07-25 166 * It's only valid to call this when @task is stopped for tracing on
828c365c Roland McGrath 2008-07-25 167 * entry to a system call, due to %TIF_SYSCALL_TRACE or %TIF_SYSCALL_AUDIT.
828c365c Roland McGrath 2008-07-25 168 * It's invalid to call this with @i + @n > 6; we only support system calls
828c365c Roland McGrath 2008-07-25 169 * taking up to 6 arguments.
5dcf7654 Dmitry V. Levin 2019-01-07 170 *
5dcf7654 Dmitry V. Levin 2019-01-07 171 * This function is a wrapper around arch-specific __syscall_set_arguments.
828c365c Roland McGrath 2008-07-25 172 */
ac0321df Dmitry V. Levin 2019-01-07 173 static void
5dcf7654 Dmitry V. Levin 2019-01-07 @174 __syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
828c365c Roland McGrath 2008-07-25 175 unsigned int i, unsigned int n,
828c365c Roland McGrath 2008-07-25 176 const unsigned long *args);
828c365c Roland McGrath 2008-07-25 177

:::::: The code at line 174 was first introduced by commit
:::::: 5dcf7654462a65216387a92e06b3ae1c268bd581 asm-generic/syscall.h: turn syscall_[gs]et_arguments into wrappers

:::::: TO: Dmitry V. Levin <ldv@xxxxxxxxxxxx>
:::::: CC: 0day robot <lkp@xxxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip