Skip to content

Commit 355746d

Browse files
captain5050gregkh
authored andcommitted
perf bpf-utils: Constify bpil_array_desc
[ Upstream commit 1654a0e ] The array's contents is a compile time constant. Constify to make the code more intention revealing and avoid unintended errors. Reviewed-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Ian Rogers <irogers@google.com> Link: https://lore.kernel.org/r/20250902181713.309797-3-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org> Stable-dep-of: 01be43f ("perf bpf-utils: Harden get_bpf_prog_info_linear") Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent f3bf21d commit 355746d

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

tools/perf/util/bpf-utils.c

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ struct bpil_array_desc {
2020
*/
2121
};
2222

23-
static struct bpil_array_desc bpil_array_desc[] = {
23+
static const struct bpil_array_desc bpil_array_desc[] = {
2424
[PERF_BPIL_JITED_INSNS] = {
2525
offsetof(struct bpf_prog_info, jited_prog_insns),
2626
offsetof(struct bpf_prog_info, jited_prog_len),
@@ -129,12 +129,10 @@ get_bpf_prog_info_linear(int fd, __u64 arrays)
129129

130130
/* step 2: calculate total size of all arrays */
131131
for (i = PERF_BPIL_FIRST_ARRAY; i < PERF_BPIL_LAST_ARRAY; ++i) {
132+
const struct bpil_array_desc *desc = &bpil_array_desc[i];
132133
bool include_array = (arrays & (1UL << i)) > 0;
133-
struct bpil_array_desc *desc;
134134
__u32 count, size;
135135

136-
desc = bpil_array_desc + i;
137-
138136
/* kernel is too old to support this field */
139137
if (info_len < desc->array_offset + sizeof(__u32) ||
140138
info_len < desc->count_offset + sizeof(__u32) ||
@@ -163,13 +161,12 @@ get_bpf_prog_info_linear(int fd, __u64 arrays)
163161
ptr = info_linear->data;
164162

165163
for (i = PERF_BPIL_FIRST_ARRAY; i < PERF_BPIL_LAST_ARRAY; ++i) {
166-
struct bpil_array_desc *desc;
164+
const struct bpil_array_desc *desc = &bpil_array_desc[i];
167165
__u32 count, size;
168166

169167
if ((arrays & (1UL << i)) == 0)
170168
continue;
171169

172-
desc = bpil_array_desc + i;
173170
count = bpf_prog_info_read_offset_u32(&info, desc->count_offset);
174171
size = bpf_prog_info_read_offset_u32(&info, desc->size_offset);
175172
bpf_prog_info_set_offset_u32(&info_linear->info,
@@ -192,13 +189,12 @@ get_bpf_prog_info_linear(int fd, __u64 arrays)
192189

193190
/* step 6: verify the data */
194191
for (i = PERF_BPIL_FIRST_ARRAY; i < PERF_BPIL_LAST_ARRAY; ++i) {
195-
struct bpil_array_desc *desc;
192+
const struct bpil_array_desc *desc = &bpil_array_desc[i];
196193
__u32 v1, v2;
197194

198195
if ((arrays & (1UL << i)) == 0)
199196
continue;
200197

201-
desc = bpil_array_desc + i;
202198
v1 = bpf_prog_info_read_offset_u32(&info, desc->count_offset);
203199
v2 = bpf_prog_info_read_offset_u32(&info_linear->info,
204200
desc->count_offset);
@@ -224,13 +220,12 @@ void bpil_addr_to_offs(struct perf_bpil *info_linear)
224220
int i;
225221

226222
for (i = PERF_BPIL_FIRST_ARRAY; i < PERF_BPIL_LAST_ARRAY; ++i) {
227-
struct bpil_array_desc *desc;
223+
const struct bpil_array_desc *desc = &bpil_array_desc[i];
228224
__u64 addr, offs;
229225

230226
if ((info_linear->arrays & (1UL << i)) == 0)
231227
continue;
232228

233-
desc = bpil_array_desc + i;
234229
addr = bpf_prog_info_read_offset_u64(&info_linear->info,
235230
desc->array_offset);
236231
offs = addr - ptr_to_u64(info_linear->data);
@@ -244,13 +239,12 @@ void bpil_offs_to_addr(struct perf_bpil *info_linear)
244239
int i;
245240

246241
for (i = PERF_BPIL_FIRST_ARRAY; i < PERF_BPIL_LAST_ARRAY; ++i) {
247-
struct bpil_array_desc *desc;
242+
const struct bpil_array_desc *desc = &bpil_array_desc[i];
248243
__u64 addr, offs;
249244

250245
if ((info_linear->arrays & (1UL << i)) == 0)
251246
continue;
252247

253-
desc = bpil_array_desc + i;
254248
offs = bpf_prog_info_read_offset_u64(&info_linear->info,
255249
desc->array_offset);
256250
addr = offs + ptr_to_u64(info_linear->data);

0 commit comments

Comments
 (0)