From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751991AbbCVKGe (ORCPT ); Sun, 22 Mar 2015 06:06:34 -0400 Received: from mail7.hitachi.co.jp ([133.145.228.42]:40772 "EHLO mail7.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751789AbbCVKGc (ORCPT ); Sun, 22 Mar 2015 06:06:32 -0400 Message-ID: <550E9421.7030507@hitachi.com> Date: Sun, 22 Mar 2015 19:06:25 +0900 From: Masami Hiramatsu Organization: Hitachi, Ltd., Japan User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 MIME-Version: 1.0 To: Alexei Starovoitov CC: Ingo Molnar , Steven Rostedt , Namhyung Kim , Arnaldo Carvalho de Melo , Jiri Olsa , "David S. Miller" , Daniel Borkmann , Peter Zijlstra , linux-api@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: Re: [PATCH v9 tip 3/9] tracing: attach BPF programs to kprobes References: <1426894210-27441-1-git-send-email-ast@plumgrid.com> <1426894210-27441-4-git-send-email-ast@plumgrid.com> <550D60C2.8010502@hitachi.com> <550D962E.7010400@plumgrid.com> In-Reply-To: <550D962E.7010400@plumgrid.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org (2015/03/22 1:02), Alexei Starovoitov wrote: > On 3/21/15 5:14 AM, Masami Hiramatsu wrote: >> (2015/03/21 8:30), Alexei Starovoitov wrote: >>> >>> Note, kprobes are _not_ a stable kernel ABI, so bpf programs attached to >>> kprobes must be recompiled for every kernel version and user must supply correct >>> LINUX_VERSION_CODE in attr.kern_version during bpf_prog_load() call. >>> >> >> Would you mean that the ABI of kprobe-based BPF programs? Kprobe API/ABIs >> (register_kprobe() etc.) are stable, but the code who use kprobes certainly >> depends the kernel binary by design. So, if you meant it, BPF programs must >> be recompiled for every kernel binaries (including configuration changes, >> not only its version). > > yes. I mainly meant that bpf+kprobe programs must be recompiled > for every kernel binary. Hmm, if so, as we do in perf (and systemtap too), you'd better check kernel's build-id instead of the kernel version when loading the BPF program. It is safer than the KERNEL_VERSION_CODE. > But you're incorrect saying that register_kprobe API is stable. > It's equally kernel dependent. > register_kprobe(struct kprobe *p) is export_gpl, but it takes > kernel internal 'struct kprobe' and it's not declared in uapi header. > Prototype of kprobe_handler_t is also kernel internal, so whoever > is using kprobes must recompile their code every time. > If we want, we can change register_kprobe function name to something > else. Just like kernel modules cannot expect that exported symbols > will stay around from version to version. We don't care when we > break out of tree modules. Indeed the register_kprobe (and other kprobe related functions) should not be treated as a stable userland exported ABI/API. :) Thank you, -- Masami HIRAMATSU Software Platform Research Dept. Linux Technology Research Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com