* Re: [PATCHv3 3/9] bpf: Introduce bpf_copy_to_kernel() to buffer the content from bpf-prog
[not found] <20250529041744.16458-4-piliu@redhat.com>
@ 2025-05-29 11:48 ` kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-05-29 11:48 UTC (permalink / raw)
To: Pingfan Liu, bpf
Cc: llvm, oe-kbuild-all, Pingfan Liu, Alexei Starovoitov,
Daniel Borkmann, John Fastabend, Andrii Nakryiko,
Martin KaFai Lau, Eduard Zingerman, Song Liu, Yonghong Song,
Jeremy Linton, Catalin Marinas, Will Deacon, Ard Biesheuvel,
Simon Horman, Gerd Hoffmann, Vitaly Kuznetsov, Philipp Rudo,
Viktor Malik, Jan Hendrik Farr, Baoquan He, Dave Young,
Andrew Morton, Linux Memory Management List, kexec, KP Singh,
Stanislav Fomichev, Hao Luo, Jiri Olsa
Hi Pingfan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on bpf-next/net]
[also build test WARNING on bpf-next/master bpf/master arm64/for-next/core linus/master v6.15 next-20250529]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Pingfan-Liu/kexec_file-Make-kexec_image_load_default-global-visible/20250529-122124
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git net
patch link: https://lore.kernel.org/r/20250529041744.16458-4-piliu%40redhat.com
patch subject: [PATCHv3 3/9] bpf: Introduce bpf_copy_to_kernel() to buffer the content from bpf-prog
config: riscv-randconfig-001-20250529 (https://download.01.org/0day-ci/archive/20250529/202505291926.IPUSqCEj-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250529/202505291926.IPUSqCEj-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505291926.IPUSqCEj-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> kernel/bpf/helpers_carrier.c:74:17: warning: no previous prototype for function 'bpf_mem_range_result_put' [-Wmissing-prototypes]
74 | __bpf_kfunc int bpf_mem_range_result_put(struct mem_range_result *result)
| ^
kernel/bpf/helpers_carrier.c:74:13: note: declare 'static' if the function is not intended to be used outside of this translation unit
74 | __bpf_kfunc int bpf_mem_range_result_put(struct mem_range_result *result)
| ^
| static
kernel/bpf/helpers_carrier.c:88:7: warning: variable 'kmalloc' set but not used [-Wunused-but-set-variable]
88 | bool kmalloc;
| ^
>> kernel/bpf/helpers_carrier.c:82:17: warning: no previous prototype for function 'bpf_copy_to_kernel' [-Wmissing-prototypes]
82 | __bpf_kfunc int bpf_copy_to_kernel(const char *name, char *buf, int size)
| ^
kernel/bpf/helpers_carrier.c:82:13: note: declare 'static' if the function is not intended to be used outside of this translation unit
82 | __bpf_kfunc int bpf_copy_to_kernel(const char *name, char *buf, int size)
| ^
| static
>> kernel/bpf/helpers_carrier.c:165:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
165 | if (!find_listener(item->str)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
kernel/bpf/helpers_carrier.c:174:9: note: uninitialized use occurs here
174 | return ret;
| ^~~
kernel/bpf/helpers_carrier.c:165:2: note: remove the 'if' if its condition is always false
165 | if (!find_listener(item->str)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166 | hash_add(str_listeners, &item->node, hash);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167 | } else {
| ~~~~~~
kernel/bpf/helpers_carrier.c:149:9: note: initialize the variable 'ret' to silence this warning
149 | int ret;
| ^
| = 0
4 warnings generated.
vim +/bpf_mem_range_result_put +74 kernel/bpf/helpers_carrier.c
73
> 74 __bpf_kfunc int bpf_mem_range_result_put(struct mem_range_result *result)
75 {
76 return mem_range_result_put(result);
77 }
78
79 /*
80 * Cache the content in @buf into kernel
81 */
> 82 __bpf_kfunc int bpf_copy_to_kernel(const char *name, char *buf, int size)
83 {
84 struct mem_range_result *range;
85 struct mem_cgroup *memcg, *old_memcg;
86 struct str_listener *item;
87 resource_handler handler;
88 bool kmalloc;
89 char *kbuf;
90 int id, ret = 0;
91
92 id = srcu_read_lock(&srcu);
93 item = find_listener(name);
94 if (!item) {
95 srcu_read_unlock(&srcu, id);
96 return -EINVAL;
97 }
98 kmalloc = item->kmalloc;
99 handler = item->handler;
100 srcu_read_unlock(&srcu, id);
101 memcg = get_mem_cgroup_from_current();
102 old_memcg = set_active_memcg(memcg);
103 range = kmalloc(sizeof(struct mem_range_result), GFP_KERNEL);
104 if (!range) {
105 pr_err("fail to allocate mem_range_result\n");
106 ret = -ENOMEM;
107 goto err;
108 }
109
110 kref_init(&range->ref);
111 if (item->kmalloc)
112 kbuf = kmalloc(size, GFP_KERNEL | __GFP_ACCOUNT);
113 else
114 kbuf = __vmalloc(size, GFP_KERNEL | __GFP_ACCOUNT);
115 if (!kbuf) {
116 kfree(range);
117 ret = -ENOMEM;
118 goto err;
119 }
120 ret = copy_from_kernel_nofault(kbuf, buf, size);
121 if (unlikely(ret < 0)) {
122 kfree(range);
123 if (item->kmalloc)
124 kfree(kbuf);
125 else
126 vfree(kbuf);
127 ret = -EINVAL;
128 goto err;
129 }
130 range->kmalloc = item->kmalloc;
131 range->buf = kbuf;
132 range->buf_sz = size;
133 range->data_sz = size;
134 range->memcg = memcg;
135 mem_cgroup_tryget(memcg);
136 range->status = 0;
137 ret = handler(name, range);
138 mem_range_result_put(range);
139 err:
140 set_active_memcg(old_memcg);
141 mem_cgroup_put(memcg);
142 return ret;
143 }
144
145 int register_carrier_listener(struct carrier_listener *listener)
146 {
147 struct str_listener *item;
148 unsigned int hash;
149 int ret;
150
151 if (!listener->name)
152 return -EINVAL;
153 item = kmalloc(sizeof(*item), GFP_KERNEL);
154 if (!item)
155 return -ENOMEM;
156 item->str = kstrdup(listener->name, GFP_KERNEL);
157 if (!item->str) {
158 kfree(item);
159 return -ENOMEM;
160 }
161 item->handler = listener->handler;
162 item->kmalloc = listener->kmalloc;
163 hash = jhash(item->str, strlen(item->str), 0);
164 mutex_lock(&str_listeners_mutex);
> 165 if (!find_listener(item->str)) {
166 hash_add(str_listeners, &item->node, hash);
167 } else {
168 kfree(item->str);
169 kfree(item);
170 ret = -EBUSY;
171 }
172 mutex_unlock(&str_listeners_mutex);
173
174 return ret;
175 }
176 EXPORT_SYMBOL(register_carrier_listener);
177
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-05-29 11:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20250529041744.16458-4-piliu@redhat.com>
2025-05-29 11:48 ` [PATCHv3 3/9] bpf: Introduce bpf_copy_to_kernel() to buffer the content from bpf-prog kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox