Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

lib: move freader into buildid.h

Move struct freader and prototypes of the functions operating on it into
the buildid.h.

This allows reusing freader outside buildid, e.g. for file dynptr
support added later.

Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com>
Link: https://lore.kernel.org/r/20251026203853.135105-4-mykyta.yatsenko5@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>

authored by

Mykyta Yatsenko and committed by
Alexei Starovoitov
76e4fed8 531b87d8

+31 -24
+1
MAINTAINERS
··· 4648 4648 F: arch/*/net/* 4649 4649 F: include/linux/bpf* 4650 4650 F: include/linux/btf* 4651 + F: include/linux/buildid.h 4651 4652 F: include/linux/filter.h 4652 4653 F: include/trace/events/xdp.h 4653 4654 F: include/uapi/linux/bpf*
+25
include/linux/buildid.h
··· 18 18 static inline void init_vmlinux_build_id(void) { } 19 19 #endif 20 20 21 + struct freader { 22 + void *buf; 23 + u32 buf_sz; 24 + int err; 25 + union { 26 + struct { 27 + struct file *file; 28 + struct folio *folio; 29 + void *addr; 30 + loff_t folio_off; 31 + bool may_fault; 32 + }; 33 + struct { 34 + const char *data; 35 + u64 data_sz; 36 + }; 37 + }; 38 + }; 39 + 40 + void freader_init_from_file(struct freader *r, void *buf, u32 buf_sz, 41 + struct file *file, bool may_fault); 42 + void freader_init_from_mem(struct freader *r, const char *data, u64 data_sz); 43 + const void *freader_fetch(struct freader *r, loff_t file_off, size_t sz); 44 + void freader_cleanup(struct freader *r); 45 + 21 46 #endif
+5 -24
lib/buildid.c
··· 11 11 12 12 #define MAX_PHDR_CNT 256 13 13 14 - struct freader { 15 - void *buf; 16 - u32 buf_sz; 17 - int err; 18 - union { 19 - struct { 20 - struct file *file; 21 - struct folio *folio; 22 - void *addr; 23 - loff_t folio_off; 24 - bool may_fault; 25 - }; 26 - struct { 27 - const char *data; 28 - u64 data_sz; 29 - }; 30 - }; 31 - }; 32 - 33 - static void freader_init_from_file(struct freader *r, void *buf, u32 buf_sz, 34 - struct file *file, bool may_fault) 14 + void freader_init_from_file(struct freader *r, void *buf, u32 buf_sz, 15 + struct file *file, bool may_fault) 35 16 { 36 17 memset(r, 0, sizeof(*r)); 37 18 r->buf = buf; ··· 21 40 r->may_fault = may_fault; 22 41 } 23 42 24 - static void freader_init_from_mem(struct freader *r, const char *data, u64 data_sz) 43 + void freader_init_from_mem(struct freader *r, const char *data, u64 data_sz) 25 44 { 26 45 memset(r, 0, sizeof(*r)); 27 46 r->data = data; ··· 73 92 return 0; 74 93 } 75 94 76 - static const void *freader_fetch(struct freader *r, loff_t file_off, size_t sz) 95 + const void *freader_fetch(struct freader *r, loff_t file_off, size_t sz) 77 96 { 78 97 size_t folio_sz; 79 98 ··· 128 147 return r->addr + (file_off - r->folio_off); 129 148 } 130 149 131 - static void freader_cleanup(struct freader *r) 150 + void freader_cleanup(struct freader *r) 132 151 { 133 152 if (!r->buf) 134 153 return; /* non-file-backed mode */