History

kdb: use memmove instead of overlapping memcpy

gcc discovered that the memcpy() arguments in kdbnearsym() overlap, so we should really use memmove(), which is defined to handle that correctly: In function 'memcpy', inlined from 'kdbnearsym' at /git/arm-soc/kernel/debug/kdb/kdb_support.c:132:4: /git/arm-soc/include/linux/string.h:353:9: error: '__builtin_memcpy' accessing 792 bytes at offsets 0 and 8 overlaps 784 bytes at offset 8 [-Werror=restrict] return __builtin_memcpy(p, q, size);

Arnd Bergmann committed 8 years ago

Commit 2cf2f0d1 parent 40b90ef1 file · +2 −2Browse files

Showing the changes to kernel/debug (1 of 1 file). Show all

Unified · Split

kernel/debug/kdb/kdb_support.c+2−2
@@ -129,13 +129,13 @@ int kdbnearsym(unsigned long addr, kdb_symtab_t *symtab) · 128 unmodified lines
129 }129 }
130 if (i >= ARRAY_SIZE(kdb_name_table)) {130 if (i >= ARRAY_SIZE(kdb_name_table)) {
131 debug_kfree(kdb_name_table[0]);131 debug_kfree(kdb_name_table[0]);
132 memcpy(kdb_name_table, kdb_name_table+1,132 memmove(kdb_name_table, kdb_name_table+1,
133 sizeof(kdb_name_table[0]) *133 sizeof(kdb_name_table[0]) *
134 (ARRAY_SIZE(kdb_name_table)-1));134 (ARRAY_SIZE(kdb_name_table)-1));
135 } else {135 } else {
136 debug_kfree(knt1);136 debug_kfree(knt1);
137 knt1 = kdb_name_table[i];137 knt1 = kdb_name_table[i];
138 memcpy(kdb_name_table+i, kdb_name_table+i+1,138 memmove(kdb_name_table+i, kdb_name_table+i+1,
139 sizeof(kdb_name_table[0]) *139 sizeof(kdb_name_table[0]) *
140 (ARRAY_SIZE(kdb_name_table)-i-1));140 (ARRAY_SIZE(kdb_name_table)-i-1));
141 }141 }