2013-04-07 10:24:48

by Chen Gang

[permalink] [raw]
Subject: [PATCH] kernel: debug: memcpy overlaped, use memmove instead of memcpy.


in memcpy, src and dest are overlaped.
for default implementaion or some architectures, it is OK.
but we can not be sure that it is OK for all platforms.
and in this condition, the performance are not quite important.

so better to use standard ways: let memmove instead of memcpy.

Signed-off-by: Chen Gang <[email protected]>
---
kernel/debug/kdb/kdb_support.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/debug/kdb/kdb_support.c b/kernel/debug/kdb/kdb_support.c
index d35cc2d..990b3cc 100644
--- a/kernel/debug/kdb/kdb_support.c
+++ b/kernel/debug/kdb/kdb_support.c
@@ -129,13 +129,13 @@ int kdbnearsym(unsigned long addr, kdb_symtab_t *symtab)
}
if (i >= ARRAY_SIZE(kdb_name_table)) {
debug_kfree(kdb_name_table[0]);
- memcpy(kdb_name_table, kdb_name_table+1,
+ memmove(kdb_name_table, kdb_name_table+1,
sizeof(kdb_name_table[0]) *
(ARRAY_SIZE(kdb_name_table)-1));
} else {
debug_kfree(knt1);
knt1 = kdb_name_table[i];
- memcpy(kdb_name_table+i, kdb_name_table+i+1,
+ memmove(kdb_name_table+i, kdb_name_table+i+1,
sizeof(kdb_name_table[0]) *
(ARRAY_SIZE(kdb_name_table)-i-1));
}
--
1.7.7.6


2013-04-17 09:43:31

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] kernel: debug: memcpy overlaped, use memmove instead of memcpy.

Hello maintainers:

please help check this patch, when you have time, thanks.


On 2013年04月07日 18:24, Chen Gang wrote:
>
> in memcpy, src and dest are overlaped.
> for default implementaion or some architectures, it is OK.
> but we can not be sure that it is OK for all platforms.
> and in this condition, the performance are not quite important.
>
> so better to use standard ways: let memmove instead of memcpy.
>
> Signed-off-by: Chen Gang <[email protected]>
> ---
> kernel/debug/kdb/kdb_support.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/debug/kdb/kdb_support.c b/kernel/debug/kdb/kdb_support.c
> index d35cc2d..990b3cc 100644
> --- a/kernel/debug/kdb/kdb_support.c
> +++ b/kernel/debug/kdb/kdb_support.c
> @@ -129,13 +129,13 @@ int kdbnearsym(unsigned long addr, kdb_symtab_t *symtab)
> }
> if (i >= ARRAY_SIZE(kdb_name_table)) {
> debug_kfree(kdb_name_table[0]);
> - memcpy(kdb_name_table, kdb_name_table+1,
> + memmove(kdb_name_table, kdb_name_table+1,
> sizeof(kdb_name_table[0]) *
> (ARRAY_SIZE(kdb_name_table)-1));
> } else {
> debug_kfree(knt1);
> knt1 = kdb_name_table[i];
> - memcpy(kdb_name_table+i, kdb_name_table+i+1,
> + memmove(kdb_name_table+i, kdb_name_table+i+1,
> sizeof(kdb_name_table[0]) *
> (ARRAY_SIZE(kdb_name_table)-i-1));
> }
>


--
Chen Gang

Asianux Corporation