AF_XDP-interaction: info for using macro XSK_BTF_READ_INTO

The program segfaulted if using the XSK_BTF_READ_INTO macro
with field as a C-string e.g. "rx_ktime".

Add comments to highlight this happens.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
This commit is contained in:
Jesper Dangaard Brouer
2021-11-03 21:06:55 +01:00
parent 5080226836
commit 778b5e6cdf
2 changed files with 3 additions and 3 deletions

View File

@@ -402,7 +402,7 @@ static void print_meta_info_time(uint8_t *pkt)
int err;
struct meta_info *m;
/* Notice how rx_ktime_ptr becomes a pointer into struct memory */
err = xsk_btf__read((void **)&rx_ktime_ptr, sizeof(*rx_ktime_ptr),
"rx_ktime", xbi, pkt);
if (err) {
@@ -410,8 +410,7 @@ static void print_meta_info_time(uint8_t *pkt)
return;
}
rx_ktime = *rx_ktime_ptr;
// XSK_BTF_READ_INTO(rx_ktime, "rx_ktime", xbi, pkt);
/* Above same as XSK_BTF_READ_INTO(rx_ktime, rx_ktime, xbi, pkt); */
diff = time_now - rx_ktime;

View File

@@ -21,6 +21,7 @@ LIBBPF_API int xsk_btf__read(void **dest, size_t size, const char *field, struct
const void *addr);
LIBBPF_API bool xsk_btf__has_field(const char *field, struct xsk_btf_info *xbi);
/* Notice: that field must NOT be a C-string as macro will stringify it */
#define XSK_BTF_READ_INTO(dest, field, xbi, addr) ({ \
typeof(dest) *_d; \
xsk_btf__read((void **)&_d, sizeof(dest), #field, xbi, addr); \