* [PATCH bpf-next v4 3/3] bpf: remove the cgroup -> bpf header dependecy
@ 2021-12-15 18:12 ` Jakub Kicinski
0 siblings, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2021-12-15 18:12 UTC (permalink / raw)
To: daniel-FeC+5ew28dpmcu3hnIyYJQ, ast-DgEjT+Ai2ygdnm+yROfE0A,
andrii-DgEjT+Ai2ygdnm+yROfE0A
Cc: bpf-u79uwXL29TY76Z2rM5mHXA, Jakub Kicinski, kafai-b10kYP2dOMg,
songliubraving-b10kYP2dOMg, yhs-b10kYP2dOMg,
john.fastabend-Re5JQEeQqe8AvxtiuMwx3w,
kpsingh-DgEjT+Ai2ygdnm+yROfE0A, tj-DgEjT+Ai2ygdnm+yROfE0A,
lizefan.x-EC8Uxl6Npydl57MIdRCFDg, hannes-druUgvl0LCNAfugRpC6u6w,
cgroups-u79uwXL29TY76Z2rM5mHXA
Remove the dependency from cgroup-defs.h to bpf-cgroup.h and bpf.h.
This reduces the incremental build size of x86 allmodconfig after
bpf.h was touched from ~17k objects rebuilt to ~5k objects.
bpf.h is 2.2kLoC and is modified relatively often.
We need a new header with just the definition of struct cgroup_bpf
and enum cgroup_bpf_attach_type, this is akin to cgroup-defs.h.
Signed-off-by: Jakub Kicinski <kuba-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
CC: ast-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
CC: daniel-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org
CC: andrii-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
CC: kafai-b10kYP2dOMg@public.gmane.org
CC: songliubraving-b10kYP2dOMg@public.gmane.org
CC: yhs-b10kYP2dOMg@public.gmane.org
CC: john.fastabend-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
CC: kpsingh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
CC: tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
CC: lizefan.x-EC8Uxl6Npydl57MIdRCFDg@public.gmane.org
CC: hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org
CC: bpf-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
CC: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
---
include/linux/bpf-cgroup-defs.h | 70 +++++++++++++++++++++++++++++++++
include/linux/bpf-cgroup.h | 57 +--------------------------
include/linux/cgroup-defs.h | 2 +-
3 files changed, 72 insertions(+), 57 deletions(-)
create mode 100644 include/linux/bpf-cgroup-defs.h
diff --git a/include/linux/bpf-cgroup-defs.h b/include/linux/bpf-cgroup-defs.h
new file mode 100644
index 000000000000..695d1224a71b
--- /dev/null
+++ b/include/linux/bpf-cgroup-defs.h
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _BPF_CGROUP_DEFS_H
+#define _BPF_CGROUP_DEFS_H
+
+#ifdef CONFIG_CGROUP_BPF
+
+#include <linux/list.h>
+#include <linux/percpu-refcount.h>
+#include <linux/workqueue.h>
+
+struct bpf_prog_array;
+
+enum cgroup_bpf_attach_type {
+ CGROUP_BPF_ATTACH_TYPE_INVALID = -1,
+ CGROUP_INET_INGRESS = 0,
+ CGROUP_INET_EGRESS,
+ CGROUP_INET_SOCK_CREATE,
+ CGROUP_SOCK_OPS,
+ CGROUP_DEVICE,
+ CGROUP_INET4_BIND,
+ CGROUP_INET6_BIND,
+ CGROUP_INET4_CONNECT,
+ CGROUP_INET6_CONNECT,
+ CGROUP_INET4_POST_BIND,
+ CGROUP_INET6_POST_BIND,
+ CGROUP_UDP4_SENDMSG,
+ CGROUP_UDP6_SENDMSG,
+ CGROUP_SYSCTL,
+ CGROUP_UDP4_RECVMSG,
+ CGROUP_UDP6_RECVMSG,
+ CGROUP_GETSOCKOPT,
+ CGROUP_SETSOCKOPT,
+ CGROUP_INET4_GETPEERNAME,
+ CGROUP_INET6_GETPEERNAME,
+ CGROUP_INET4_GETSOCKNAME,
+ CGROUP_INET6_GETSOCKNAME,
+ CGROUP_INET_SOCK_RELEASE,
+ MAX_CGROUP_BPF_ATTACH_TYPE
+};
+
+struct cgroup_bpf {
+ /* array of effective progs in this cgroup */
+ struct bpf_prog_array __rcu *effective[MAX_CGROUP_BPF_ATTACH_TYPE];
+
+ /* attached progs to this cgroup and attach flags
+ * when flags == 0 or BPF_F_ALLOW_OVERRIDE the progs list will
+ * have either zero or one element
+ * when BPF_F_ALLOW_MULTI the list can have up to BPF_CGROUP_MAX_PROGS
+ */
+ struct list_head progs[MAX_CGROUP_BPF_ATTACH_TYPE];
+ u32 flags[MAX_CGROUP_BPF_ATTACH_TYPE];
+
+ /* list of cgroup shared storages */
+ struct list_head storages;
+
+ /* temp storage for effective prog array used by prog_attach/detach */
+ struct bpf_prog_array *inactive;
+
+ /* reference counter used to detach bpf programs after cgroup removal */
+ struct percpu_ref refcnt;
+
+ /* cgroup_bpf is released using a work queue */
+ struct work_struct release_work;
+};
+
+#else /* CONFIG_CGROUP_BPF */
+struct cgroup_bpf {};
+#endif /* CONFIG_CGROUP_BPF */
+
+#endif
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
index 11820a430d6c..b525d8cdc25b 100644
--- a/include/linux/bpf-cgroup.h
+++ b/include/linux/bpf-cgroup.h
@@ -3,10 +3,10 @@
#define _BPF_CGROUP_H
#include <linux/bpf.h>
+#include <linux/bpf-cgroup-defs.h>
#include <linux/errno.h>
#include <linux/jump_label.h>
#include <linux/percpu.h>
-#include <linux/percpu-refcount.h>
#include <linux/rbtree.h>
#include <uapi/linux/bpf.h>
@@ -23,33 +23,6 @@ struct ctl_table_header;
struct task_struct;
#ifdef CONFIG_CGROUP_BPF
-enum cgroup_bpf_attach_type {
- CGROUP_BPF_ATTACH_TYPE_INVALID = -1,
- CGROUP_INET_INGRESS = 0,
- CGROUP_INET_EGRESS,
- CGROUP_INET_SOCK_CREATE,
- CGROUP_SOCK_OPS,
- CGROUP_DEVICE,
- CGROUP_INET4_BIND,
- CGROUP_INET6_BIND,
- CGROUP_INET4_CONNECT,
- CGROUP_INET6_CONNECT,
- CGROUP_INET4_POST_BIND,
- CGROUP_INET6_POST_BIND,
- CGROUP_UDP4_SENDMSG,
- CGROUP_UDP6_SENDMSG,
- CGROUP_SYSCTL,
- CGROUP_UDP4_RECVMSG,
- CGROUP_UDP6_RECVMSG,
- CGROUP_GETSOCKOPT,
- CGROUP_SETSOCKOPT,
- CGROUP_INET4_GETPEERNAME,
- CGROUP_INET6_GETPEERNAME,
- CGROUP_INET4_GETSOCKNAME,
- CGROUP_INET6_GETSOCKNAME,
- CGROUP_INET_SOCK_RELEASE,
- MAX_CGROUP_BPF_ATTACH_TYPE
-};
#define CGROUP_ATYPE(type) \
case BPF_##type: return type
@@ -127,33 +100,6 @@ struct bpf_prog_list {
struct bpf_cgroup_storage *storage[MAX_BPF_CGROUP_STORAGE_TYPE];
};
-struct bpf_prog_array;
-
-struct cgroup_bpf {
- /* array of effective progs in this cgroup */
- struct bpf_prog_array __rcu *effective[MAX_CGROUP_BPF_ATTACH_TYPE];
-
- /* attached progs to this cgroup and attach flags
- * when flags == 0 or BPF_F_ALLOW_OVERRIDE the progs list will
- * have either zero or one element
- * when BPF_F_ALLOW_MULTI the list can have up to BPF_CGROUP_MAX_PROGS
- */
- struct list_head progs[MAX_CGROUP_BPF_ATTACH_TYPE];
- u32 flags[MAX_CGROUP_BPF_ATTACH_TYPE];
-
- /* list of cgroup shared storages */
- struct list_head storages;
-
- /* temp storage for effective prog array used by prog_attach/detach */
- struct bpf_prog_array *inactive;
-
- /* reference counter used to detach bpf programs after cgroup removal */
- struct percpu_ref refcnt;
-
- /* cgroup_bpf is released using a work queue */
- struct work_struct release_work;
-};
-
int cgroup_bpf_inherit(struct cgroup *cgrp);
void cgroup_bpf_offline(struct cgroup *cgrp);
@@ -451,7 +397,6 @@ int cgroup_bpf_prog_query(const union bpf_attr *attr,
union bpf_attr __user *uattr);
#else
-struct cgroup_bpf {};
static inline int cgroup_bpf_inherit(struct cgroup *cgrp) { return 0; }
static inline void cgroup_bpf_offline(struct cgroup *cgrp) {}
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h
index db2e147e069f..411684c80cf3 100644
--- a/include/linux/cgroup-defs.h
+++ b/include/linux/cgroup-defs.h
@@ -19,7 +19,7 @@
#include <linux/percpu-rwsem.h>
#include <linux/u64_stats_sync.h>
#include <linux/workqueue.h>
-#include <linux/bpf-cgroup.h>
+#include <linux/bpf-cgroup-defs.h>
#include <linux/psi_types.h>
#ifdef CONFIG_CGROUPS
--
2.31.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH bpf-next v4 3/3] bpf: remove the cgroup -> bpf header dependecy
@ 2021-12-15 18:28 ` Tejun Heo
0 siblings, 0 replies; 11+ messages in thread
From: Tejun Heo @ 2021-12-15 18:28 UTC (permalink / raw)
To: Jakub Kicinski
Cc: daniel, ast, andrii, bpf, kafai, songliubraving, yhs,
john.fastabend, kpsingh, lizefan.x, hannes, cgroups
On Wed, Dec 15, 2021 at 10:12:31AM -0800, Jakub Kicinski wrote:
> Remove the dependency from cgroup-defs.h to bpf-cgroup.h and bpf.h.
> This reduces the incremental build size of x86 allmodconfig after
> bpf.h was touched from ~17k objects rebuilt to ~5k objects.
> bpf.h is 2.2kLoC and is modified relatively often.
>
> We need a new header with just the definition of struct cgroup_bpf
> and enum cgroup_bpf_attach_type, this is akin to cgroup-defs.h.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Tejun Heo <tj@kernel.org>
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH bpf-next v4 3/3] bpf: remove the cgroup -> bpf header dependecy
@ 2021-12-15 18:28 ` Tejun Heo
0 siblings, 0 replies; 11+ messages in thread
From: Tejun Heo @ 2021-12-15 18:28 UTC (permalink / raw)
To: Jakub Kicinski
Cc: daniel-FeC+5ew28dpmcu3hnIyYJQ, ast-DgEjT+Ai2ygdnm+yROfE0A,
andrii-DgEjT+Ai2ygdnm+yROfE0A, bpf-u79uwXL29TY76Z2rM5mHXA,
kafai-b10kYP2dOMg, songliubraving-b10kYP2dOMg, yhs-b10kYP2dOMg,
john.fastabend-Re5JQEeQqe8AvxtiuMwx3w,
kpsingh-DgEjT+Ai2ygdnm+yROfE0A, lizefan.x-EC8Uxl6Npydl57MIdRCFDg,
hannes-druUgvl0LCNAfugRpC6u6w, cgroups-u79uwXL29TY76Z2rM5mHXA
On Wed, Dec 15, 2021 at 10:12:31AM -0800, Jakub Kicinski wrote:
> Remove the dependency from cgroup-defs.h to bpf-cgroup.h and bpf.h.
> This reduces the incremental build size of x86 allmodconfig after
> bpf.h was touched from ~17k objects rebuilt to ~5k objects.
> bpf.h is 2.2kLoC and is modified relatively often.
>
> We need a new header with just the definition of struct cgroup_bpf
> and enum cgroup_bpf_attach_type, this is akin to cgroup-defs.h.
>
> Signed-off-by: Jakub Kicinski <kuba-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Acked-by: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH bpf-next v4 3/3] bpf: remove the cgroup -> bpf header dependecy
2021-12-15 18:12 ` Jakub Kicinski
(?)
(?)
@ 2021-12-15 23:07 ` kernel test robot
-1 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2021-12-15 23:07 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 16978 bytes --]
Hi Jakub,
I love your patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/bpf-remove-the-cgroup-bpf-header-dependecy/20211216-021426
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: um-i386_defconfig (https://download.01.org/0day-ci/archive/20211216/202112160753.yRz2i2rn-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/4dc3a2bcf4720df1766ff9dc2bcbf14b3f221a31
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/bpf-remove-the-cgroup-bpf-header-dependecy/20211216-021426
git checkout 4dc3a2bcf4720df1766ff9dc2bcbf14b3f221a31
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=um SUBARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from init/main.c:21:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
init/main.c:768:20: warning: no previous prototype for 'arch_post_acpi_subsys_init' [-Wmissing-prototypes]
768 | void __init __weak arch_post_acpi_subsys_init(void) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
init/main.c:780:20: warning: no previous prototype for 'mem_encrypt_init' [-Wmissing-prototypes]
780 | void __init __weak mem_encrypt_init(void) { }
| ^~~~~~~~~~~~~~~~
init/main.c:782:20: warning: no previous prototype for 'poking_init' [-Wmissing-prototypes]
782 | void __init __weak poking_init(void) { }
| ^~~~~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from init/noinitramfs.c:11:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from arch/um/kernel/syscall.c:11:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
arch/um/kernel/syscall.c:17:6: warning: no previous prototype for 'old_mmap' [-Wmissing-prototypes]
17 | long old_mmap(unsigned long addr, unsigned long len,
| ^~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from arch/x86/um/tls_32.c:8:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
arch/x86/um/tls_32.c:23:5: warning: no previous prototype for 'do_set_thread_area' [-Wmissing-prototypes]
23 | int do_set_thread_area(struct user_desc *info)
| ^~~~~~~~~~~~~~~~~~
arch/x86/um/tls_32.c:39:5: warning: no previous prototype for 'do_get_thread_area' [-Wmissing-prototypes]
39 | int do_get_thread_area(struct user_desc *info)
| ^~~~~~~~~~~~~~~~~~
arch/x86/um/tls_32.c:187:5: warning: no previous prototype for 'arch_switch_tls' [-Wmissing-prototypes]
187 | int arch_switch_tls(struct task_struct *to)
| ^~~~~~~~~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from kernel/fork.c:54:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
kernel/fork.c:161:13: warning: no previous prototype for 'arch_release_task_struct' [-Wmissing-prototypes]
161 | void __weak arch_release_task_struct(struct task_struct *tsk)
| ^~~~~~~~~~~~~~~~~~~~~~~~
kernel/fork.c:763:20: warning: no previous prototype for 'arch_task_cache_init' [-Wmissing-prototypes]
763 | void __init __weak arch_task_cache_init(void) { }
| ^~~~~~~~~~~~~~~~~~~~
kernel/fork.c:858:12: warning: no previous prototype for 'arch_dup_task_struct' [-Wmissing-prototypes]
858 | int __weak arch_dup_task_struct(struct task_struct *dst,
| ^~~~~~~~~~~~~~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from kernel/exit.c:42:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
kernel/exit.c:1817:13: warning: no previous prototype for 'abort' [-Wmissing-prototypes]
1817 | __weak void abort(void)
| ^~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from fs/pipe.c:24:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
fs/pipe.c:755:15: warning: no previous prototype for 'account_pipe_buffers' [-Wmissing-prototypes]
755 | unsigned long account_pipe_buffers(struct user_struct *user,
| ^~~~~~~~~~~~~~~~~~~~
fs/pipe.c:761:6: warning: no previous prototype for 'too_many_pipe_buffers_soft' [-Wmissing-prototypes]
761 | bool too_many_pipe_buffers_soft(unsigned long user_bufs)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/pipe.c:768:6: warning: no previous prototype for 'too_many_pipe_buffers_hard' [-Wmissing-prototypes]
768 | bool too_many_pipe_buffers_hard(unsigned long user_bufs)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/pipe.c:775:6: warning: no previous prototype for 'pipe_is_unprivileged_user' [-Wmissing-prototypes]
775 | bool pipe_is_unprivileged_user(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
fs/pipe.c:1245:5: warning: no previous prototype for 'pipe_resize_ring' [-Wmissing-prototypes]
1245 | int pipe_resize_ring(struct pipe_inode_info *pipe, unsigned int nr_slots)
| ^~~~~~~~~~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from fs/d_path.c:2:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
fs/d_path.c:318:7: warning: no previous prototype for 'simple_dname' [-Wmissing-prototypes]
318 | char *simple_dname(struct dentry *dentry, char *buffer, int buflen)
| ^~~~~~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from fs/io_uring.c:45:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
fs/io_uring.c: In function '__io_submit_flush_completions':
fs/io_uring.c:2403:33: warning: variable 'prev' set but not used [-Wunused-but-set-variable]
2403 | struct io_wq_work_node *node, *prev;
| ^~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from kernel/time/timer.c:35:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
kernel/time/timer.c:254:5: warning: no previous prototype for 'timer_migration_handler' [-Wmissing-prototypes]
254 | int timer_migration_handler(struct ctl_table *table, int write,
| ^~~~~~~~~~~~~~~~~~~~~~~
--
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from kernel/time/hrtimer.c:30:
>> include/linux/perf_event.h:1499:48: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1499 | static inline void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
kernel/time/hrtimer.c:120:21: warning: initialized field overwritten [-Woverride-init]
120 | [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:120:21: note: (near initialization for 'hrtimer_clock_to_base_table[0]')
kernel/time/hrtimer.c:121:22: warning: initialized field overwritten [-Woverride-init]
121 | [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:121:22: note: (near initialization for 'hrtimer_clock_to_base_table[1]')
kernel/time/hrtimer.c:122:21: warning: initialized field overwritten [-Woverride-init]
122 | [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:122:21: note: (near initialization for 'hrtimer_clock_to_base_table[7]')
kernel/time/hrtimer.c:123:17: warning: initialized field overwritten [-Woverride-init]
123 | [CLOCK_TAI] = HRTIMER_BASE_TAI,
| ^~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:123:17: note: (near initialization for 'hrtimer_clock_to_base_table[11]')
kernel/time/hrtimer.c: In function '__run_hrtimer':
kernel/time/hrtimer.c:1648:7: warning: variable 'expires_in_hardirq' set but not used [-Wunused-but-set-variable]
1648 | bool expires_in_hardirq;
| ^~~~~~~~~~~~~~~~~~
..
vim +1499 include/linux/perf_event.h
76193a94522f1d include/linux/perf_event.h Song Liu 2019-01-17 1495
76193a94522f1d include/linux/perf_event.h Song Liu 2019-01-17 1496 typedef int (perf_ksymbol_get_name_f)(char *name, int name_len, void *data);
76193a94522f1d include/linux/perf_event.h Song Liu 2019-01-17 1497 static inline void perf_event_ksymbol(u16 ksym_type, u64 addr, u32 len,
76193a94522f1d include/linux/perf_event.h Song Liu 2019-01-17 1498 bool unregister, const char *sym) { }
6ee52e2a3fe4ea include/linux/perf_event.h Song Liu 2019-01-17 @1499 static inline void perf_event_bpf_event(struct bpf_prog *prog,
6ee52e2a3fe4ea include/linux/perf_event.h Song Liu 2019-01-17 1500 enum perf_bpf_event_type type,
6ee52e2a3fe4ea include/linux/perf_event.h Song Liu 2019-01-17 1501 u16 flags) { }
e041e328c4b41e include/linux/perf_event.h Peter Zijlstra 2014-05-21 1502 static inline void perf_event_exec(void) { }
82b897782d10fc include/linux/perf_event.h Adrian Hunter 2014-05-28 1503 static inline void perf_event_comm(struct task_struct *tsk, bool exec) { }
e422267322cd31 include/linux/perf_event.h Hari Bathini 2017-03-08 1504 static inline void perf_event_namespaces(struct task_struct *tsk) { }
cdd6c482c9ff9c include/linux/perf_event.h Ingo Molnar 2009-09-21 1505 static inline void perf_event_fork(struct task_struct *tsk) { }
e17d43b93e544f include/linux/perf_event.h Adrian Hunter 2020-05-12 1506 static inline void perf_event_text_poke(const void *addr,
e17d43b93e544f include/linux/perf_event.h Adrian Hunter 2020-05-12 1507 const void *old_bytes,
e17d43b93e544f include/linux/perf_event.h Adrian Hunter 2020-05-12 1508 size_t old_len,
e17d43b93e544f include/linux/perf_event.h Adrian Hunter 2020-05-12 1509 const void *new_bytes,
e17d43b93e544f include/linux/perf_event.h Adrian Hunter 2020-05-12 1510 size_t new_len) { }
cdd6c482c9ff9c include/linux/perf_event.h Ingo Molnar 2009-09-21 1511 static inline void perf_event_init(void) { }
4ed7c92d68a538 include/linux/perf_event.h Peter Zijlstra 2009-11-23 1512 static inline int perf_swevent_get_recursion_context(void) { return -1; }
4ed7c92d68a538 include/linux/perf_event.h Peter Zijlstra 2009-11-23 1513 static inline void perf_swevent_put_recursion_context(int rctx) { }
ab573844e3058e include/linux/perf_event.h Jiri Olsa 2013-05-01 1514 static inline u64 perf_swevent_set_period(struct perf_event *event) { return 0; }
44234adcdce38f include/linux/perf_event.h Frederic Weisbecker 2009-12-09 1515 static inline void perf_event_enable(struct perf_event *event) { }
44234adcdce38f include/linux/perf_event.h Frederic Weisbecker 2009-12-09 1516 static inline void perf_event_disable(struct perf_event *event) { }
500ad2d8b01390 include/linux/perf_event.h K.Prasad 2012-08-02 1517 static inline int __perf_event_disable(void *info) { return -1; }
e9d2b064149ff7 include/linux/perf_event.h Peter Zijlstra 2010-09-17 1518 static inline void perf_event_task_tick(void) { }
ffe8690c85b842 include/linux/perf_event.h Kaixu Xia 2015-08-06 1519 static inline int perf_event_release_kernel(struct perf_event *event) { return 0; }
3ca270fc9edb25 include/linux/perf_event.h Like Xu 2019-10-27 1520 static inline int perf_event_period(struct perf_event *event, u64 value)
3ca270fc9edb25 include/linux/perf_event.h Like Xu 2019-10-27 1521 {
3ca270fc9edb25 include/linux/perf_event.h Like Xu 2019-10-27 1522 return -EINVAL;
3ca270fc9edb25 include/linux/perf_event.h Like Xu 2019-10-27 1523 }
52ba4b0b99770e include/linux/perf_event.h Like Xu 2019-10-27 1524 static inline u64 perf_event_pause(struct perf_event *event, bool reset)
52ba4b0b99770e include/linux/perf_event.h Like Xu 2019-10-27 1525 {
52ba4b0b99770e include/linux/perf_event.h Like Xu 2019-10-27 1526 return 0;
52ba4b0b99770e include/linux/perf_event.h Like Xu 2019-10-27 1527 }
0793a61d4df8da include/linux/perf_counter.h Thomas Gleixner 2008-12-04 1528 #endif
0793a61d4df8da include/linux/perf_counter.h Thomas Gleixner 2008-12-04 1529
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH bpf-next v4 3/3] bpf: remove the cgroup -> bpf header dependecy
2021-12-15 18:12 ` Jakub Kicinski
` (2 preceding siblings ...)
(?)
@ 2021-12-15 23:59 ` kernel test robot
-1 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2021-12-15 23:59 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 5614 bytes --]
Hi Jakub,
I love your patch! Yet something to improve:
[auto build test ERROR on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/bpf-remove-the-cgroup-bpf-header-dependecy/20211216-021426
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: nds32-defconfig (https://download.01.org/0day-ci/archive/20211216/202112160742.WbIAtZxD-lkp(a)intel.com/config)
compiler: nds32le-linux-gcc (GCC) 11.2.0
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/0day-ci/linux/commit/4dc3a2bcf4720df1766ff9dc2bcbf14b3f221a31
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/bpf-remove-the-cgroup-bpf-header-dependecy/20211216-021426
git checkout 4dc3a2bcf4720df1766ff9dc2bcbf14b3f221a31
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=nds32 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 >>):
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from kernel/events/core.c:34:
include/linux/perf_event.h:1239:41: warning: 'struct bpf_prog' declared inside parameter list will not be visible outside of this definition or declaration
1239 | extern void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~
>> kernel/events/core.c:8935:6: error: conflicting types for 'perf_event_bpf_event'; have 'void(struct bpf_prog *, enum perf_bpf_event_type, u16)' {aka 'void(struct bpf_prog *, enum perf_bpf_event_type, short unsigned int)'}
8935 | void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~~~~~~~~~~~~~
In file included from include/linux/trace_events.h:10,
from include/trace/syscall.h:7,
from include/linux/syscalls.h:88,
from kernel/events/core.c:34:
include/linux/perf_event.h:1239:13: note: previous declaration of 'perf_event_bpf_event' with type 'void(struct bpf_prog *, enum perf_bpf_event_type, u16)' {aka 'void(struct bpf_prog *, enum perf_bpf_event_type, short unsigned int)'}
1239 | extern void perf_event_bpf_event(struct bpf_prog *prog,
| ^~~~~~~~~~~~~~~~~~~~
vim +8935 kernel/events/core.c
6ee52e2a3fe4ea Song Liu 2019-01-17 8934
6ee52e2a3fe4ea Song Liu 2019-01-17 @8935 void perf_event_bpf_event(struct bpf_prog *prog,
6ee52e2a3fe4ea Song Liu 2019-01-17 8936 enum perf_bpf_event_type type,
6ee52e2a3fe4ea Song Liu 2019-01-17 8937 u16 flags)
6ee52e2a3fe4ea Song Liu 2019-01-17 8938 {
6ee52e2a3fe4ea Song Liu 2019-01-17 8939 struct perf_bpf_event bpf_event;
6ee52e2a3fe4ea Song Liu 2019-01-17 8940
6ee52e2a3fe4ea Song Liu 2019-01-17 8941 if (type <= PERF_BPF_EVENT_UNKNOWN ||
6ee52e2a3fe4ea Song Liu 2019-01-17 8942 type >= PERF_BPF_EVENT_MAX)
6ee52e2a3fe4ea Song Liu 2019-01-17 8943 return;
6ee52e2a3fe4ea Song Liu 2019-01-17 8944
6ee52e2a3fe4ea Song Liu 2019-01-17 8945 switch (type) {
6ee52e2a3fe4ea Song Liu 2019-01-17 8946 case PERF_BPF_EVENT_PROG_LOAD:
6ee52e2a3fe4ea Song Liu 2019-01-17 8947 case PERF_BPF_EVENT_PROG_UNLOAD:
6ee52e2a3fe4ea Song Liu 2019-01-17 8948 if (atomic_read(&nr_ksymbol_events))
6ee52e2a3fe4ea Song Liu 2019-01-17 8949 perf_event_bpf_emit_ksymbols(prog, type);
6ee52e2a3fe4ea Song Liu 2019-01-17 8950 break;
6ee52e2a3fe4ea Song Liu 2019-01-17 8951 default:
6ee52e2a3fe4ea Song Liu 2019-01-17 8952 break;
6ee52e2a3fe4ea Song Liu 2019-01-17 8953 }
6ee52e2a3fe4ea Song Liu 2019-01-17 8954
6ee52e2a3fe4ea Song Liu 2019-01-17 8955 if (!atomic_read(&nr_bpf_events))
6ee52e2a3fe4ea Song Liu 2019-01-17 8956 return;
6ee52e2a3fe4ea Song Liu 2019-01-17 8957
6ee52e2a3fe4ea Song Liu 2019-01-17 8958 bpf_event = (struct perf_bpf_event){
6ee52e2a3fe4ea Song Liu 2019-01-17 8959 .prog = prog,
6ee52e2a3fe4ea Song Liu 2019-01-17 8960 .event_id = {
6ee52e2a3fe4ea Song Liu 2019-01-17 8961 .header = {
6ee52e2a3fe4ea Song Liu 2019-01-17 8962 .type = PERF_RECORD_BPF_EVENT,
6ee52e2a3fe4ea Song Liu 2019-01-17 8963 .size = sizeof(bpf_event.event_id),
6ee52e2a3fe4ea Song Liu 2019-01-17 8964 },
6ee52e2a3fe4ea Song Liu 2019-01-17 8965 .type = type,
6ee52e2a3fe4ea Song Liu 2019-01-17 8966 .flags = flags,
6ee52e2a3fe4ea Song Liu 2019-01-17 8967 .id = prog->aux->id,
6ee52e2a3fe4ea Song Liu 2019-01-17 8968 },
6ee52e2a3fe4ea Song Liu 2019-01-17 8969 };
6ee52e2a3fe4ea Song Liu 2019-01-17 8970
6ee52e2a3fe4ea Song Liu 2019-01-17 8971 BUILD_BUG_ON(BPF_TAG_SIZE % sizeof(u64));
6ee52e2a3fe4ea Song Liu 2019-01-17 8972
6ee52e2a3fe4ea Song Liu 2019-01-17 8973 memcpy(bpf_event.event_id.tag, prog->tag, BPF_TAG_SIZE);
6ee52e2a3fe4ea Song Liu 2019-01-17 8974 perf_iterate_sb(perf_event_bpf_output, &bpf_event, NULL);
6ee52e2a3fe4ea Song Liu 2019-01-17 8975 }
6ee52e2a3fe4ea Song Liu 2019-01-17 8976
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 11+ messages in thread