[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202412131236.a5HhOqXo-lkp@intel.com>
Date: Fri, 13 Dec 2024 12:10:31 +0800
From: kernel test robot <lkp@...el.com>
To: Pawan Gupta <pawan.kumar.gupta@...ux.intel.com>
Cc: oe-kbuild-all@...ts.linux.dev, linux-kernel@...r.kernel.org,
Thomas Gleixner <tglx@...utronix.de>,
Daniel Sneddon <daniel.sneddon@...ux.intel.com>,
Alexandre Chartre <alexandre.chartre@...cle.com>,
Josh Poimboeuf <jpoimboe@...nel.org>
Subject: arch/x86/entry/common.c:211: warning: Function parameter or struct
member 'regs' not described in 'do_int80_emulation'
Hi Pawan,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: eefa7a9c069908412f8f5d15833901d1b46ae1b2
commit: 7390db8aea0d64e9deb28b8e1ce716f5020c7ee5 x86/bhi: Add support for clearing branch history at syscall entry
date: 8 months ago
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20241213/202412131236.a5HhOqXo-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241213/202412131236.a5HhOqXo-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412131236.a5HhOqXo-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/x86/entry/common.c:211: warning: Function parameter or struct member 'regs' not described in 'do_int80_emulation'
vim +211 arch/x86/entry/common.c
55617fb991df535 Thomas Gleixner 2023-12-04 190
be5341eb0d43b1e Thomas Gleixner 2023-12-04 191 /**
7390db8aea0d64e Pawan Gupta 2024-03-11 192 * do_int80_emulation - 32-bit legacy syscall C entry from asm
be5341eb0d43b1e Thomas Gleixner 2023-12-04 193 *
be5341eb0d43b1e Thomas Gleixner 2023-12-04 194 * This entry point can be used by 32-bit and 64-bit programs to perform
be5341eb0d43b1e Thomas Gleixner 2023-12-04 195 * 32-bit system calls. Instances of INT $0x80 can be found inline in
be5341eb0d43b1e Thomas Gleixner 2023-12-04 196 * various programs and libraries. It is also used by the vDSO's
be5341eb0d43b1e Thomas Gleixner 2023-12-04 197 * __kernel_vsyscall fallback for hardware that doesn't support a faster
be5341eb0d43b1e Thomas Gleixner 2023-12-04 198 * entry method. Restarted 32-bit system calls also fall back to INT
be5341eb0d43b1e Thomas Gleixner 2023-12-04 199 * $0x80 regardless of what instruction was originally used to do the
be5341eb0d43b1e Thomas Gleixner 2023-12-04 200 * system call.
be5341eb0d43b1e Thomas Gleixner 2023-12-04 201 *
be5341eb0d43b1e Thomas Gleixner 2023-12-04 202 * This is considered a slow path. It is not used by most libc
be5341eb0d43b1e Thomas Gleixner 2023-12-04 203 * implementations on modern hardware except during process startup.
be5341eb0d43b1e Thomas Gleixner 2023-12-04 204 *
be5341eb0d43b1e Thomas Gleixner 2023-12-04 205 * The arguments for the INT $0x80 based syscall are on stack in the
be5341eb0d43b1e Thomas Gleixner 2023-12-04 206 * pt_regs structure:
be5341eb0d43b1e Thomas Gleixner 2023-12-04 207 * eax: system call number
be5341eb0d43b1e Thomas Gleixner 2023-12-04 208 * ebx, ecx, edx, esi, edi, ebp: arg1 - arg 6
be5341eb0d43b1e Thomas Gleixner 2023-12-04 209 */
7390db8aea0d64e Pawan Gupta 2024-03-11 210 __visible noinstr void do_int80_emulation(struct pt_regs *regs)
be5341eb0d43b1e Thomas Gleixner 2023-12-04 @211 {
be5341eb0d43b1e Thomas Gleixner 2023-12-04 212 int nr;
be5341eb0d43b1e Thomas Gleixner 2023-12-04 213
55617fb991df535 Thomas Gleixner 2023-12-04 214 /* Kernel does not use INT $0x80! */
55617fb991df535 Thomas Gleixner 2023-12-04 215 if (unlikely(!user_mode(regs))) {
55617fb991df535 Thomas Gleixner 2023-12-04 216 irqentry_enter(regs);
55617fb991df535 Thomas Gleixner 2023-12-04 217 instrumentation_begin();
55617fb991df535 Thomas Gleixner 2023-12-04 218 panic("Unexpected external interrupt 0x80\n");
55617fb991df535 Thomas Gleixner 2023-12-04 219 }
55617fb991df535 Thomas Gleixner 2023-12-04 220
55617fb991df535 Thomas Gleixner 2023-12-04 221 /*
55617fb991df535 Thomas Gleixner 2023-12-04 222 * Establish kernel context for instrumentation, including for
55617fb991df535 Thomas Gleixner 2023-12-04 223 * int80_is_external() below which calls into the APIC driver.
55617fb991df535 Thomas Gleixner 2023-12-04 224 * Identical for soft and external interrupts.
55617fb991df535 Thomas Gleixner 2023-12-04 225 */
be5341eb0d43b1e Thomas Gleixner 2023-12-04 226 enter_from_user_mode(regs);
be5341eb0d43b1e Thomas Gleixner 2023-12-04 227
be5341eb0d43b1e Thomas Gleixner 2023-12-04 228 instrumentation_begin();
be5341eb0d43b1e Thomas Gleixner 2023-12-04 229 add_random_kstack_offset();
be5341eb0d43b1e Thomas Gleixner 2023-12-04 230
55617fb991df535 Thomas Gleixner 2023-12-04 231 /* Validate that this is a soft interrupt to the extent possible */
55617fb991df535 Thomas Gleixner 2023-12-04 232 if (unlikely(int80_is_external()))
55617fb991df535 Thomas Gleixner 2023-12-04 233 panic("Unexpected external interrupt 0x80\n");
55617fb991df535 Thomas Gleixner 2023-12-04 234
be5341eb0d43b1e Thomas Gleixner 2023-12-04 235 /*
be5341eb0d43b1e Thomas Gleixner 2023-12-04 236 * The low level idtentry code pushed -1 into regs::orig_ax
be5341eb0d43b1e Thomas Gleixner 2023-12-04 237 * and regs::ax contains the syscall number.
be5341eb0d43b1e Thomas Gleixner 2023-12-04 238 *
be5341eb0d43b1e Thomas Gleixner 2023-12-04 239 * User tracing code (ptrace or signal handlers) might assume
be5341eb0d43b1e Thomas Gleixner 2023-12-04 240 * that the regs::orig_ax contains a 32-bit number on invoking
be5341eb0d43b1e Thomas Gleixner 2023-12-04 241 * a 32-bit syscall.
be5341eb0d43b1e Thomas Gleixner 2023-12-04 242 *
be5341eb0d43b1e Thomas Gleixner 2023-12-04 243 * Establish the syscall convention by saving the 32bit truncated
be5341eb0d43b1e Thomas Gleixner 2023-12-04 244 * syscall number in regs::orig_ax and by invalidating regs::ax.
be5341eb0d43b1e Thomas Gleixner 2023-12-04 245 */
be5341eb0d43b1e Thomas Gleixner 2023-12-04 246 regs->orig_ax = regs->ax & GENMASK(31, 0);
be5341eb0d43b1e Thomas Gleixner 2023-12-04 247 regs->ax = -ENOSYS;
be5341eb0d43b1e Thomas Gleixner 2023-12-04 248
be5341eb0d43b1e Thomas Gleixner 2023-12-04 249 nr = syscall_32_enter(regs);
be5341eb0d43b1e Thomas Gleixner 2023-12-04 250
be5341eb0d43b1e Thomas Gleixner 2023-12-04 251 local_irq_enable();
be5341eb0d43b1e Thomas Gleixner 2023-12-04 252 nr = syscall_enter_from_user_mode_work(regs, nr);
be5341eb0d43b1e Thomas Gleixner 2023-12-04 253 do_syscall_32_irqs_on(regs, nr);
be5341eb0d43b1e Thomas Gleixner 2023-12-04 254
be5341eb0d43b1e Thomas Gleixner 2023-12-04 255 instrumentation_end();
be5341eb0d43b1e Thomas Gleixner 2023-12-04 256 syscall_exit_to_user_mode(regs);
be5341eb0d43b1e Thomas Gleixner 2023-12-04 257 }
be5341eb0d43b1e Thomas Gleixner 2023-12-04 258 #else /* CONFIG_IA32_EMULATION */
be5341eb0d43b1e Thomas Gleixner 2023-12-04 259
:::::: The code at line 211 was first introduced by commit
:::::: be5341eb0d43b1e754799498bd2e8756cc167a41 x86/entry: Convert INT 0x80 emulation to IDTENTRY
:::::: TO: Thomas Gleixner <tglx@...utronix.de>
:::::: CC: Dave Hansen <dave.hansen@...ux.intel.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists