kernel/bpf/cpumask.c:41:21: warning: no previous declaration for 'bpf_cpumask_create'

From: kernel test robot
Date: Wed Aug 16 2023 - 09:27:35 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4853c74bd7ab7fdb83f319bd9ace8a08c031e9b6
commit: 516f4d3397c9e90f4da04f59986c856016269aa1 bpf: Enable cpumasks to be queried and used as kptrs
date: 7 months ago
config: x86_64-randconfig-x076-20230816 (https://download.01.org/0day-ci/archive/20230816/202308162115.Hn23vv3n-lkp@xxxxxxxxx/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce: (https://download.01.org/0day-ci/archive/20230816/202308162115.Hn23vv3n-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308162115.Hn23vv3n-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> kernel/bpf/cpumask.c:41:21: warning: no previous declaration for 'bpf_cpumask_create' [-Wmissing-declarations]
struct bpf_cpumask *bpf_cpumask_create(void)
^~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:55:21: warning: no previous declaration for 'bpf_cpumask_acquire' [-Wmissing-declarations]
struct bpf_cpumask *bpf_cpumask_acquire(struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~
kernel/bpf/cpumask.c:61:21: warning: no previous declaration for 'bpf_cpumask_kptr_get' [-Wmissing-declarations]
struct bpf_cpumask *bpf_cpumask_kptr_get(struct bpf_cpumask **cpumaskp)
^~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:79:6: warning: no previous declaration for 'bpf_cpumask_release' [-Wmissing-declarations]
void bpf_cpumask_release(struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:91:5: warning: no previous declaration for 'bpf_cpumask_first' [-Wmissing-declarations]
u32 bpf_cpumask_first(const struct cpumask *cpumask)
^~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:96:5: warning: no previous declaration for 'bpf_cpumask_first_zero' [-Wmissing-declarations]
u32 bpf_cpumask_first_zero(const struct cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:101:6: warning: no previous declaration for 'bpf_cpumask_set_cpu' [-Wmissing-declarations]
void bpf_cpumask_set_cpu(u32 cpu, struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:109:6: warning: no previous declaration for 'bpf_cpumask_clear_cpu' [-Wmissing-declarations]
void bpf_cpumask_clear_cpu(u32 cpu, struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:117:6: warning: no previous declaration for 'bpf_cpumask_test_cpu' [-Wmissing-declarations]
bool bpf_cpumask_test_cpu(u32 cpu, const struct cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:125:6: warning: no previous declaration for 'bpf_cpumask_test_and_set_cpu' [-Wmissing-declarations]
bool bpf_cpumask_test_and_set_cpu(u32 cpu, struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:133:6: warning: no previous declaration for 'bpf_cpumask_test_and_clear_cpu' [-Wmissing-declarations]
bool bpf_cpumask_test_and_clear_cpu(u32 cpu, struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:141:6: warning: no previous declaration for 'bpf_cpumask_setall' [-Wmissing-declarations]
void bpf_cpumask_setall(struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:146:6: warning: no previous declaration for 'bpf_cpumask_clear' [-Wmissing-declarations]
void bpf_cpumask_clear(struct bpf_cpumask *cpumask)
^~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:151:6: warning: no previous declaration for 'bpf_cpumask_and' [-Wmissing-declarations]
bool bpf_cpumask_and(struct bpf_cpumask *dst,
^~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:158:6: warning: no previous declaration for 'bpf_cpumask_or' [-Wmissing-declarations]
void bpf_cpumask_or(struct bpf_cpumask *dst,
^~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:165:6: warning: no previous declaration for 'bpf_cpumask_xor' [-Wmissing-declarations]
void bpf_cpumask_xor(struct bpf_cpumask *dst,
^~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:172:6: warning: no previous declaration for 'bpf_cpumask_equal' [-Wmissing-declarations]
bool bpf_cpumask_equal(const struct cpumask *src1, const struct cpumask *src2)
^~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:177:6: warning: no previous declaration for 'bpf_cpumask_intersects' [-Wmissing-declarations]
bool bpf_cpumask_intersects(const struct cpumask *src1, const struct cpumask *src2)
^~~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:182:6: warning: no previous declaration for 'bpf_cpumask_subset' [-Wmissing-declarations]
bool bpf_cpumask_subset(const struct cpumask *src1, const struct cpumask *src2)
^~~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:187:6: warning: no previous declaration for 'bpf_cpumask_empty' [-Wmissing-declarations]
bool bpf_cpumask_empty(const struct cpumask *cpumask)
^~~~~~~~~~~~~~~~~
>> kernel/bpf/cpumask.c:192:6: warning: no previous declaration for 'bpf_cpumask_full' [-Wmissing-declarations]
bool bpf_cpumask_full(const struct cpumask *cpumask)
^~~~~~~~~~~~~~~~
kernel/bpf/cpumask.c:197:6: warning: no previous declaration for 'bpf_cpumask_copy' [-Wmissing-declarations]
void bpf_cpumask_copy(struct bpf_cpumask *dst, const struct cpumask *src)
^~~~~~~~~~~~~~~~
kernel/bpf/cpumask.c:202:5: warning: no previous declaration for 'bpf_cpumask_any' [-Wmissing-declarations]
u32 bpf_cpumask_any(const struct cpumask *cpumask)
^~~~~~~~~~~~~~~
kernel/bpf/cpumask.c:207:5: warning: no previous declaration for 'bpf_cpumask_any_and' [-Wmissing-declarations]
u32 bpf_cpumask_any_and(const struct cpumask *src1, const struct cpumask *src2)
^~~~~~~~~~~~~~~~~~~


vim +/bpf_cpumask_create +41 kernel/bpf/cpumask.c

36
37 __diag_push();
38 __diag_ignore_all("-Wmissing-prototypes",
39 "Global kfuncs as their definitions will be in BTF");
40
> 41 struct bpf_cpumask *bpf_cpumask_create(void)
42 {
43 struct bpf_cpumask *cpumask;
44
45 cpumask = bpf_mem_alloc(&bpf_cpumask_ma, sizeof(*cpumask));
46 if (!cpumask)
47 return NULL;
48
49 memset(cpumask, 0, sizeof(*cpumask));
50 refcount_set(&cpumask->usage, 1);
51
52 return cpumask;
53 }
54
> 55 struct bpf_cpumask *bpf_cpumask_acquire(struct bpf_cpumask *cpumask)
56 {
57 refcount_inc(&cpumask->usage);
58 return cpumask;
59 }
60
> 61 struct bpf_cpumask *bpf_cpumask_kptr_get(struct bpf_cpumask **cpumaskp)
62 {
63 struct bpf_cpumask *cpumask;
64
65 /* The BPF memory allocator frees memory backing its caches in an RCU
66 * callback. Thus, we can safely use RCU to ensure that the cpumask is
67 * safe to read.
68 */
69 rcu_read_lock();
70
71 cpumask = READ_ONCE(*cpumaskp);
72 if (cpumask && !refcount_inc_not_zero(&cpumask->usage))
73 cpumask = NULL;
74
75 rcu_read_unlock();
76 return cpumask;
77 }
78
> 79 void bpf_cpumask_release(struct bpf_cpumask *cpumask)
80 {
81 if (!cpumask)
82 return;
83
84 if (refcount_dec_and_test(&cpumask->usage)) {
85 migrate_disable();
86 bpf_mem_free(&bpf_cpumask_ma, cpumask);
87 migrate_enable();
88 }
89 }
90
> 91 u32 bpf_cpumask_first(const struct cpumask *cpumask)
92 {
93 return cpumask_first(cpumask);
94 }
95
> 96 u32 bpf_cpumask_first_zero(const struct cpumask *cpumask)
97 {
98 return cpumask_first_zero(cpumask);
99 }
100
> 101 void bpf_cpumask_set_cpu(u32 cpu, struct bpf_cpumask *cpumask)
102 {
103 if (!cpu_valid(cpu))
104 return;
105
106 cpumask_set_cpu(cpu, (struct cpumask *)cpumask);
107 }
108
> 109 void bpf_cpumask_clear_cpu(u32 cpu, struct bpf_cpumask *cpumask)
110 {
111 if (!cpu_valid(cpu))
112 return;
113
114 cpumask_clear_cpu(cpu, (struct cpumask *)cpumask);
115 }
116
> 117 bool bpf_cpumask_test_cpu(u32 cpu, const struct cpumask *cpumask)
118 {
119 if (!cpu_valid(cpu))
120 return false;
121
122 return cpumask_test_cpu(cpu, (struct cpumask *)cpumask);
123 }
124
> 125 bool bpf_cpumask_test_and_set_cpu(u32 cpu, struct bpf_cpumask *cpumask)
126 {
127 if (!cpu_valid(cpu))
128 return false;
129
130 return cpumask_test_and_set_cpu(cpu, (struct cpumask *)cpumask);
131 }
132
> 133 bool bpf_cpumask_test_and_clear_cpu(u32 cpu, struct bpf_cpumask *cpumask)
134 {
135 if (!cpu_valid(cpu))
136 return false;
137
138 return cpumask_test_and_clear_cpu(cpu, (struct cpumask *)cpumask);
139 }
140
> 141 void bpf_cpumask_setall(struct bpf_cpumask *cpumask)
142 {
143 cpumask_setall((struct cpumask *)cpumask);
144 }
145
> 146 void bpf_cpumask_clear(struct bpf_cpumask *cpumask)
147 {
148 cpumask_clear((struct cpumask *)cpumask);
149 }
150
> 151 bool bpf_cpumask_and(struct bpf_cpumask *dst,
152 const struct cpumask *src1,
153 const struct cpumask *src2)
154 {
155 return cpumask_and((struct cpumask *)dst, src1, src2);
156 }
157
> 158 void bpf_cpumask_or(struct bpf_cpumask *dst,
159 const struct cpumask *src1,
160 const struct cpumask *src2)
161 {
162 cpumask_or((struct cpumask *)dst, src1, src2);
163 }
164
> 165 void bpf_cpumask_xor(struct bpf_cpumask *dst,
166 const struct cpumask *src1,
167 const struct cpumask *src2)
168 {
169 cpumask_xor((struct cpumask *)dst, src1, src2);
170 }
171
> 172 bool bpf_cpumask_equal(const struct cpumask *src1, const struct cpumask *src2)
173 {
174 return cpumask_equal(src1, src2);
175 }
176
> 177 bool bpf_cpumask_intersects(const struct cpumask *src1, const struct cpumask *src2)
178 {
179 return cpumask_intersects(src1, src2);
180 }
181
> 182 bool bpf_cpumask_subset(const struct cpumask *src1, const struct cpumask *src2)
183 {
184 return cpumask_subset(src1, src2);
185 }
186
> 187 bool bpf_cpumask_empty(const struct cpumask *cpumask)
188 {
189 return cpumask_empty(cpumask);
190 }
191
> 192 bool bpf_cpumask_full(const struct cpumask *cpumask)
193 {
194 return cpumask_full(cpumask);
195 }
196
> 197 void bpf_cpumask_copy(struct bpf_cpumask *dst, const struct cpumask *src)
198 {
199 cpumask_copy((struct cpumask *)dst, src);
200 }
201

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki