[PATCH] kexec-tools: Don't duplicate the bzImage header area

Simon Horman horms at verge.net.au
Tue Feb 8 17:15:45 EST 2011


On Tue, Feb 08, 2011 at 05:20:36PM +0200, Ahmed S. Darwish wrote:
> Hi,
> 
> Don't wholeheartedly copy the 32-Kbytes bzImage header area to the stack,
> just use a constant pointer instead.
>
> Signed-off-by: Ahmed S. Darwish <darwish.07 at gmail.com>

Hi Ahmed,

this seems reasonable to me, I have a minor comment below.

> ---
> 
> (If this is accepted, I'll send a similar patch for the setup header)
> 
> diff --git a/kexec/arch/i386/kexec-bzImage.c b/kexec/arch/i386/kexec-bzImage.c
> index 83d3a69..2312eb8 100644
> --- a/kexec/arch/i386/kexec-bzImage.c
> +++ b/kexec/arch/i386/kexec-bzImage.c
> @@ -43,32 +43,32 @@ static const int probe_debug = 0;
>  
>  int bzImage_probe(const char *buf, off_t len)
>  {
> -	struct x86_linux_header header;
> +	const struct x86_linux_header *header;
>  	if ((uintmax_t)len < (uintmax_t)sizeof(header)) {
>  		return -1;
>  	}
> -	memcpy(&header, buf, sizeof(header));
> -	if (memcmp(header.header_magic, "HdrS", 4) != 0) {
> +	header = (void *)buf;

Perhaps casting to (struct x86_linux_header*) would read better?

> +	if (memcmp(header->header_magic, "HdrS", 4) != 0) {
>  		if (probe_debug) {
>  			fprintf(stderr, "Not a bzImage\n");
>  		}
>  		return -1;
>  	}
> -	if (header.boot_sector_magic != 0xAA55) {
> +	if (header->boot_sector_magic != 0xAA55) {
>  		if (probe_debug) {
>  			fprintf(stderr, "No x86 boot sector present\n");
>  		}
>  		/* No x86 boot sector present */
>  		return -1;
>  	}
> -	if (header.protocol_version < 0x0200) {
> +	if (header->protocol_version < 0x0200) {
>  		if (probe_debug) {
>  			fprintf(stderr, "Must be at least protocol version 2.00\n");
>  		}
>  		/* Must be at least protocol version 2.00 */
>  		return -1;
>  	}
> -	if ((header.loadflags & 1) == 0) {
> +	if ((header->loadflags & 1) == 0) {
>  		if (probe_debug) {
>  			fprintf(stderr, "zImage not a bzImage\n");
>  		}
> 
> thanks,
> 
> -- 
> Darwish
> http://darwish.07.googlepages.com
> 



More information about the kexec mailing list