mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Dmitry V. Levin" <ldv@altlinux.org>
To: Paul Burton <paul.burton@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>,
	James Hogan <jhogan@kernel.org>, Oleg Nesterov <oleg@redhat.com>,
	Andy Lutomirski <luto@kernel.org>
Cc: Elvira Khabirova <lineprinter@altlinux.org>,
	Eugene Syromyatnikov <esyr@redhat.com>,
	Kees Cook <keescook@chromium.org>, Jann Horn <jannh@google.com>,
	linux-api@vger.kernel.org, strace-devel@lists.strace.io,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 24/25] ptrace: add PTRACE_GET_SYSCALL_INFO request
Date: Mon, 10 Dec 2018 19:09:40 +0300	[thread overview]
Message-ID: <20181210160940.GF14149@altlinux.org> (raw)
In-Reply-To: <201812102200.snodXJSH%fengguang.wu@intel.com>

[-- Attachment #1: Type: text/plain, Size: 4038 bytes --]

Hi, things are getting too complicated and we need some advice how to deal
with this frame_pointer issue.

On Mon, Dec 10, 2018 at 10:26:50PM +0800, kbuild test robot wrote:
> Hi Elvira,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on linus/master]
> [also build test ERROR on v4.20-rc6]
> [cannot apply to next-20181207]
> [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/ptrace-add-PTRACE_GET_SYSCALL_INFO-request/20181210-174745
> config: mips-malta_kvm_defconfig (attached as .config)
> compiler: mipsel-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=mips 
> 
> All errors (new ones prefixed by >>):
> 
>    kernel/ptrace.c: In function 'ptrace_get_syscall_info':
> >> kernel/ptrace.c:942:20: error: implicit declaration of function 'frame_pointer'; did you mean 'trace_printk'? [-Werror=implicit-function-declaration]
>       .frame_pointer = frame_pointer(regs)
>                        ^~~~~~~~~~~~~
>                        trace_printk
>    cc1: some warnings being treated as errors
> 
> vim +942 kernel/ptrace.c
> 
>    931	
>    932	static int
>    933	ptrace_get_syscall_info(struct task_struct *child, unsigned long user_size,
>    934				void __user *datavp)
>    935	{
>    936		struct pt_regs *regs = task_pt_regs(child);
>    937		struct ptrace_syscall_info info = {
>    938			.op = PTRACE_SYSCALL_INFO_NONE,
>    939			.arch = syscall_get_arch(child),
>    940			.instruction_pointer = instruction_pointer(regs),
>    941			.stack_pointer = user_stack_pointer(regs),
>  > 942			.frame_pointer = frame_pointer(regs)
>    943		};
>    944		unsigned long actual_size = offsetof(struct ptrace_syscall_info, entry);
>    945		unsigned long write_size;
>    946	
>    947		/*
>    948		 * This does not need lock_task_sighand() to access
>    949		 * child->last_siginfo because ptrace_freeze_traced()
>    950		 * called earlier by ptrace_check_attach() ensures that
>    951		 * the tracee cannot go away and clear its last_siginfo.
>    952		 */
>    953		switch (child->last_siginfo ? child->last_siginfo->si_code : 0) {
>    954		case SIGTRAP | 0x80:
>    955			switch (child->ptrace_message) {
>    956			case PTRACE_EVENTMSG_SYSCALL_ENTRY:
>    957				actual_size = ptrace_get_syscall_info_entry(child, regs,
>    958									    &info);
>    959				break;
>    960			case PTRACE_EVENTMSG_SYSCALL_EXIT:
>    961				actual_size = ptrace_get_syscall_info_exit(child, regs,
>    962									   &info);
>    963				break;
>    964			}
>    965			break;
>    966		case SIGTRAP | (PTRACE_EVENT_SECCOMP << 8):
>    967			actual_size = ptrace_get_syscall_info_seccomp(child, regs,
>    968								      &info);
>    969			break;
>    970		}
>    971	
>    972		write_size = min(actual_size, user_size);
>    973		return copy_to_user(datavp, &info, write_size) ? -EFAULT : actual_size;
>    974	}
>    975	

We decided to add .frame_pointer to struct ptrace_syscall_info just for
consistency with .instruction_pointer and .stack_pointer; I must have been
misled by comments in asm-generic/ptrace.h into thinking that
frame_pointer() is universally available across architectures.

Unlike .instruction_pointer and .stack_pointer that are actually needed
in strace, .frame_pointer is not used, so from strace PoV we don't really
need it.

So the question is, does anybody need a
struct ptrace_syscall_info.frame_pointer?

If yes, how can frame_pointer() be defined on MIPS?
Or should we just forget about making sense of frame_pointer() and remove
struct ptrace_syscall_info.frame_pointer from the proposed API?


-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

  reply	other threads:[~2018-12-10 16:09 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20181210042352.GA6092@altlinux.org>
2018-12-10  4:27 ` [PATCH v5 01/25] alpha: define remaining syscall_get_* functions Dmitry V. Levin
2018-12-10  4:28 ` [PATCH v5 02/25] Move EM_ARCOMPACT and EM_ARCV2 to uapi/linux/elf-em.h Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 03/25] arc: define syscall_get_arch() Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 04/25] c6x: " Dmitry V. Levin
2018-12-11 22:40   ` Mark Salter
2018-12-10  4:29 ` [PATCH v5 05/25] elf-em.h: add EM_CSKY Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 06/25] csky: define syscall_get_arch() Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 07/25] h8300: define remaining syscall_get_* functions Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 08/25] Move EM_HEXAGON to uapi/linux/elf-em.h Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 09/25] hexagon: define remaining syscall_get_* functions Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 10/25] Move EM_NDS32 to uapi/linux/elf-em.h Dmitry V. Levin
2018-12-10  4:29 ` [PATCH v5 11/25] nds32: define syscall_get_arch() Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 12/25] nios2: " Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 13/25] m68k: add asm/syscall.h Dmitry V. Levin
2018-12-10  8:45   ` Geert Uytterhoeven
2018-12-10 12:40     ` Dmitry V. Levin
2018-12-10 13:06       ` Geert Uytterhoeven
2018-12-10 13:30         ` Dmitry V. Levin
2018-12-12  8:55           ` Dmitry V. Levin
2018-12-12  9:01             ` Geert Uytterhoeven
2018-12-12  9:27               ` Dmitry V. Levin
2018-12-12  9:43                 ` Geert Uytterhoeven
2018-12-12 12:04                   ` Dmitry V. Levin
2018-12-12 12:27                     ` Geert Uytterhoeven
2018-12-12 12:37                       ` Dmitry V. Levin
2018-12-12 12:54                         ` Geert Uytterhoeven
2018-12-12 13:07                           ` Dmitry V. Levin
2018-12-12 23:12                             ` Dmitry V. Levin
2019-03-29 22:04             ` Dmitry V. Levin
2019-03-30 20:57               ` Geert Uytterhoeven
2018-12-10  4:30 ` [PATCH v5 14/25] mips: define syscall_get_error() Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 15/25] parisc: " Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 16/25] powerpc: " Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 17/25] riscv: define syscall_get_arch() Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 18/25] Move EM_XTENSA to uapi/linux/elf-em.h Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 19/25] xtensa: define syscall_get_* functions Dmitry V. Levin
2018-12-10  5:02   ` Max Filippov
2018-12-10 12:53     ` Dmitry V. Levin
2018-12-10 20:14       ` Max Filippov
2018-12-10 20:24         ` Dmitry V. Levin
2018-12-10 20:30           ` Dmitry V. Levin
2018-12-10 21:29             ` Max Filippov
2018-12-12 10:45   ` kbuild test robot
2018-12-19  5:58   ` kbuild test robot
2018-12-10  4:30 ` [PATCH v5 20/25] Move EM_UNICORE to uapi/linux/elf-em.h Dmitry V. Levin
2018-12-10  4:30 ` [PATCH v5 21/25] unicore32: add asm/syscall.h Dmitry V. Levin
2018-12-10  4:31 ` [PATCH v5 22/25] syscall_get_arch: add "struct task_struct *" argument Dmitry V. Levin
2018-12-10 17:29   ` Kees Cook
2018-12-11 22:44   ` Mark Salter
2018-12-10  4:31 ` [PATCH v5 23/25] powerpc/ptrace: replace ptrace_report_syscall() with a tracehook call Dmitry V. Levin
2018-12-10  4:31 ` [PATCH v5 24/25] ptrace: add PTRACE_GET_SYSCALL_INFO request Dmitry V. Levin
2018-12-10 14:11   ` Oleg Nesterov
2018-12-10 16:21     ` Dmitry V. Levin
2018-12-11 15:29       ` Oleg Nesterov
2018-12-11 16:23         ` Dmitry V. Levin
2018-12-11 20:27           ` Dmitry V. Levin
2018-12-12 18:00             ` Oleg Nesterov
2018-12-10 14:26   ` kbuild test robot
2018-12-10 16:09     ` Dmitry V. Levin [this message]
2018-12-10 18:04       ` Paul Burton
2018-12-10 21:04         ` Palmer Dabbelt
2018-12-10 19:38       ` Andy Lutomirski
2018-12-10 17:44   ` Kees Cook
2018-12-12  9:28   ` kbuild test robot
2018-12-10  4:31 ` [PATCH v5 25/25] selftests/ptrace: add a test case for PTRACE_GET_SYSCALL_INFO Dmitry V. Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181210160940.GF14149@altlinux.org \
    --to=ldv@altlinux.org \
    --cc=esyr@redhat.com \
    --cc=jannh@google.com \
    --cc=jhogan@kernel.org \
    --cc=keescook@chromium.org \
    --cc=lineprinter@altlinux.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=oleg@redhat.com \
    --cc=paul.burton@mips.com \
    --cc=ralf@linux-mips.org \
    --cc=strace-devel@lists.strace.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome