| Submitter | Matthias Weisser |
|---|---|
| Date | Jan. 18, 2011, 4:14 p.m. |
| Message ID | <1295367283-4696-1-git-send-email-weisserm@arcor.de> |
| Download | mbox | patch |
| Permalink | /patch/79325/ |
| State | Superseded |
| Headers | show |
Comments
Dear Matthias Weisser, In message <1295367283-4696-1-git-send-email-weisserm@arcor.de> you wrote: > When an elf section is already at the right position (e.g. after image > decompression by bootm) there is no need to copy it. > > Signed-off-by: Matthias Weisser <weisserm@arcor.de> > --- > common/cmd_elf.c | 7 ++++--- > 1 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/common/cmd_elf.c b/common/cmd_elf.c > index bf32612..aec4579 100644 > --- a/common/cmd_elf.c > +++ b/common/cmd_elf.c > @@ -342,9 +342,10 @@ static unsigned long load_elf_image_shdr(unsigned long addr) > memset ((void *)shdr->sh_addr, 0, shdr->sh_size); > } else { > image = (unsigned char *) addr + shdr->sh_offset; > - memcpy ((void *) shdr->sh_addr, > - (const void *) image, > - shdr->sh_size); > + if ((void *) shdr->sh_addr != (void *) image) > + memcpy((void *) shdr->sh_addr, > + (const void *) image, > + shdr->sh_size); Braces required for multi-line statement. Best regards, Wolfgang Denk
Patch
diff --git a/common/cmd_elf.c b/common/cmd_elf.c index bf32612..aec4579 100644 --- a/common/cmd_elf.c +++ b/common/cmd_elf.c @@ -342,9 +342,10 @@ static unsigned long load_elf_image_shdr(unsigned long addr) memset ((void *)shdr->sh_addr, 0, shdr->sh_size); } else { image = (unsigned char *) addr + shdr->sh_offset; - memcpy ((void *) shdr->sh_addr, - (const void *) image, - shdr->sh_size); + if ((void *) shdr->sh_addr != (void *) image) + memcpy((void *) shdr->sh_addr, + (const void *) image, + shdr->sh_size); } flush_cache (shdr->sh_addr, shdr->sh_size); }
When an elf section is already at the right position (e.g. after image decompression by bootm) there is no need to copy it. Signed-off-by: Matthias Weisser <weisserm@arcor.de> --- common/cmd_elf.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)