From 013243345c15a8a50b7269e56489a25bf81226c2 Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Thu, 20 Feb 2020 14:17:40 -0800 Subject: [PATCH] Invalid mem errors when using latest BCC --- bpf/estat/backend-io.c | 7 +++---- bpf/stbtrace/io.st | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/bpf/estat/backend-io.c b/bpf/estat/backend-io.c index ba998f9..3ddf679 100644 --- a/bpf/estat/backend-io.c +++ b/bpf/estat/backend-io.c @@ -15,9 +15,8 @@ #define READ_STR "read " #define WRITE_STR "write " #define OP_NAME_LEN 7 -#define DEV_NAME_LEN 8 #define NAME_LENGTH (OP_NAME_LEN + 1) -#define AXIS_LENGTH (DEV_NAME_LEN + 1) +#define AXIS_LENGTH (DISK_NAME_LEN + 1) // Structure to hold thread local data typedef struct { @@ -25,7 +24,7 @@ typedef struct { unsigned int size; unsigned int cmd_flags; u32 err; - char device[DEV_NAME_LEN]; + char device[DISK_NAME_LEN]; } io_data_t; BPF_HASH(io_base_data, u64, io_data_t); @@ -40,7 +39,7 @@ disk_io_start(struct pt_regs *ctx, struct request *reqp) data.ts = bpf_ktime_get_ns(); data.cmd_flags = reqp->cmd_flags; data.size = reqp->__data_len; - __builtin_memcpy(&data.device, diskp->disk_name, DEV_NAME_LEN); + bpf_probe_read_str(&data.device, DISK_NAME_LEN, diskp->disk_name); io_base_data.update((u64 *) &reqp, &data); return (0); } diff --git a/bpf/stbtrace/io.st b/bpf/stbtrace/io.st index 62b19b6..266957a 100755 --- a/bpf/stbtrace/io.st +++ b/bpf/stbtrace/io.st @@ -69,7 +69,7 @@ int disk_io_start(struct pt_regs *ctx, struct request *reqp) data.ts = bpf_ktime_get_ns(); data.cmd_flags = reqp->cmd_flags; data.size = reqp->__data_len; - __builtin_memcpy(&data.device, diskp->disk_name, DISK_NAME_LEN); + bpf_probe_read_str(&data.device, DISK_NAME_LEN, diskp->disk_name); io_base_data.update((u64 *) &reqp, &data); return 0; }