From 8bea589cfe0fca1a6f560e16ca66a4cf199041a2 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 4 Apr 2022 22:40:45 +0200 Subject: vppinfra: make _vec_len() read-only Use of _vec_len() to set vector length breaks address sanitizer. Users should use vec_set_len(), vec_inc_len(), vec_dec_len () instead. Type: improvement Change-Id: I441ae948771eb21c23a61f3ff9163bdad74a2cb8 Signed-off-by: Damjan Marion --- src/vppinfra/linux/mem.c | 2 +- src/vppinfra/linux/sysfs.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/vppinfra/linux') diff --git a/src/vppinfra/linux/mem.c b/src/vppinfra/linux/mem.c index 6c3e036d951..9cf598d3c6f 100644 --- a/src/vppinfra/linux/mem.c +++ b/src/vppinfra/linux/mem.c @@ -261,7 +261,7 @@ clib_mem_vm_create_fd (clib_mem_page_sz_t log2_page_size, char *fmt, ...) /* memfd_create maximum string size is 249 chars without trailing zero */ if (vec_len (s) > 249) - _vec_len (s) = 249; + vec_set_len (s, 249); vec_add1 (s, 0); /* memfd_create introduced in kernel 3.17, we don't support older kernels */ diff --git a/src/vppinfra/linux/sysfs.c b/src/vppinfra/linux/sysfs.c index 758eaa1a86c..a3e122cf1e0 100644 --- a/src/vppinfra/linux/sysfs.c +++ b/src/vppinfra/linux/sysfs.c @@ -70,7 +70,7 @@ clib_sysfs_read (char *file_name, char *fmt, ...) return clib_error_return_unix (0, "read `%s'", file_name); } - _vec_len (s) = sz; + vec_set_len (s, sz); unformat_init_vector (&input, s); va_list va; @@ -154,7 +154,7 @@ clib_sysfs_set_nr_hugepages (int numa_node, int log2_page_size, int nr) goto done; } - _vec_len (p) -= 1; + vec_dec_len (p, 1); p = format (p, "/hugepages/hugepages-%ukB/nr_hugepages%c", page_size, 0); clib_sysfs_write ((char *) p, "%d", nr); @@ -207,7 +207,7 @@ clib_sysfs_get_xxx_hugepages (char *type, int numa_node, goto done; } - _vec_len (p) -= 1; + vec_dec_len (p, 1); p = format (p, "/hugepages/hugepages-%ukB/%s_hugepages%c", page_size, type, 0); error = clib_sysfs_read ((char *) p, "%d", val); -- cgit 1.2.3-korg