lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <48C99F29.2030007@zytor.com>
Date:	Thu, 11 Sep 2008 15:43:53 -0700
From:	"H. Peter Anvin" <hpa@...or.com>
To:	Alain Knaff <alain@...ff.lu>
CC:	linux-kernel@...r.kernel.org, torvalds@...ux-foundation.org,
	w@....eu
Subject: Re: [update3] [PATCH] init: bzip2 or lzma -compressed kernels and
 initrds

Alain Knaff wrote:
> From: Alain Knaff <alain@...ff.lu>
> 
> This is an updated version of my bzip2/lzma patch
> 
> It is based on an idea by Christian Ludwig, includes support for
> compressing the kernel with bzip2 or lzma rather than gzip. Both
> compressors give smaller sizes than gzip.  Lzma's decompresses faster
> than bzip2.
> 
> It also supports ramdisks and initramfs' compressed using these two
> compressors.
> 
> The functionality has been successfully used for a couple of years by
> the udpcast project
> 
> This version applies to "tip" kernel 2.6.27-rc5
> 
> Changes since last version (update2):
> 
> - Removed NEW_CODE #ifdef : non-Intel architectures will be patched
>   eventually anyways
> - Replaced IN_MEMORY #ifdefs by (less efficient) runtime checks
> 
> Signed-off-by: Alain Knaff <alain@...ff.lu>

Looks a lot better now.  See the following, though:

> -#define OF(args)	args
>  #define STATIC		static
> +#define NEW_CODE

Should be deleted, right?

>  
> -	phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum);
> +	phdrs = (void *) malloc(sizeof(*phdrs) * ehdr.e_phnum);
>  	if (!phdrs)

malloc() returns a void pointer already...

> +
> +#ifdef CONFIG_RD_BZIP2
> +	/*
> +	 * If it matches the bzip magic numbers, return -1
> +	 */
> +	if (buf[0] == 0x42 && (buf[1] == 0x5a)) {
> +		printk(KERN_NOTICE
> +		       "RAMDISK: Bzipped image found at block %d\n",
> +		       start_block);
> +		*uncompressor = bunzip2;
>  		nblocks = 0;
>  		goto done;
>  	}
> +#endif
> +
> +#ifdef CONFIG_RD_LZMA
> +	/*
> +	 * If it matches the bzip magic numbers, return -1
                              ^^^^
                              ????
> +	 */
> +	if (buf[0] == 0x5d && (buf[1] == 0x00)) {
> +		printk(KERN_NOTICE
> +		       "RAMDISK: Lzma image found at block %d\n",
> +		       start_block);



> -#define OF(args)  args
> +#ifdef CONFIG_RD_BZIP2
> +#include <linux/decompress_bunzip2.h>
> +#endif
> +#ifdef CONFIG_RD_LZMA
> +#include <linux/decompress_unlzma.h>
>  #endif

There is no reason to include header files conditionally.

It might be worthwhile to create a proper subdirectory rather than using 
an underscored namespace (also, in general, dashes are preferred in 
filenames.)


> +#ifndef always_inline
> +#  if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0)
> +#    define always_inline __attribute__((always_inline)) inline
> +#  else
> +#    define always_inline inline
> +#  endif
> +#endif

Any reason to not just use <linux/compiler.h> here?

> +#ifdef CONFIG_FEATURE_LZMA_FAST
> +#  define speed_inline always_inline
> +#else
> +#  define speed_inline
> +#endif

Should this be always_inline or just plain inline?

	-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ