mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			166 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From fdf23ed283bc6ef5c25076ce2065f892120ff556 Mon Sep 17 00:00:00 2001
 | |
| From: Phillip Lougher <phillip@lougher.demon.co.uk>
 | |
| Date: Thu, 22 Oct 2009 04:57:38 +0100
 | |
| Subject: [PATCH] Squashfs: Make unlzma available to non initramfs/initrd code
 | |
| 
 | |
| Add a config option DECOMPRESS_LZMA_NEEDED which allows subsystems to
 | |
| specify they need the unlzma code.  Normally decompress_unlzma.c is
 | |
| compiled with __init and unlzma is not exported to modules.
 | |
| 
 | |
| Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
 | |
| ---
 | |
|  fs/squashfs/Kconfig                   |    1 +
 | |
|  include/linux/decompress/bunzip2_mm.h |   12 ++++++++++++
 | |
|  include/linux/decompress/inflate_mm.h |   12 ++++++++++++
 | |
|  include/linux/decompress/mm.h         |    3 ---
 | |
|  include/linux/decompress/unlzma_mm.h  |   20 ++++++++++++++++++++
 | |
|  lib/Kconfig                           |    3 +++
 | |
|  lib/decompress_bunzip2.c              |    1 +
 | |
|  lib/decompress_inflate.c              |    1 +
 | |
|  lib/decompress_unlzma.c               |    5 ++++-
 | |
|  9 files changed, 54 insertions(+), 4 deletions(-)
 | |
|  create mode 100644 include/linux/decompress/bunzip2_mm.h
 | |
|  create mode 100644 include/linux/decompress/inflate_mm.h
 | |
|  create mode 100644 include/linux/decompress/unlzma_mm.h
 | |
| 
 | |
| --- a/fs/squashfs/Kconfig
 | |
| +++ b/fs/squashfs/Kconfig
 | |
| @@ -41,6 +41,7 @@ config SQUASHFS_LZMA
 | |
|  	bool "Include support for LZMA compressed file systems"
 | |
|  	depends on SQUASHFS
 | |
|  	select DECOMPRESS_LZMA
 | |
| +	select DECOMPRESS_LZMA_NEEDED
 | |
|  
 | |
|  config SQUASHFS_EMBEDDED
 | |
|  
 | |
| --- /dev/null
 | |
| +++ b/include/linux/decompress/bunzip2_mm.h
 | |
| @@ -0,0 +1,12 @@
 | |
| +#ifndef BUNZIP2_MM_H
 | |
| +#define BUNZIP2_MM_H
 | |
| +
 | |
| +#ifdef STATIC
 | |
| +/* Code active when included from pre-boot environment: */
 | |
| +#define INIT
 | |
| +#else
 | |
| +/* Compile for initramfs/initrd code only */
 | |
| +#define INIT __init
 | |
| +#endif
 | |
| +
 | |
| +#endif
 | |
| --- /dev/null
 | |
| +++ b/include/linux/decompress/inflate_mm.h
 | |
| @@ -0,0 +1,12 @@
 | |
| +#ifndef INFLATE_MM_H
 | |
| +#define INFLATE_MM_H
 | |
| +
 | |
| +#ifdef STATIC
 | |
| +/* Code active when included from pre-boot environment: */
 | |
| +#define INIT
 | |
| +#else
 | |
| +/* Compile for initramfs/initrd code only */
 | |
| +#define INIT __init
 | |
| +#endif
 | |
| +
 | |
| +#endif
 | |
| --- a/include/linux/decompress/mm.h
 | |
| +++ b/include/linux/decompress/mm.h
 | |
| @@ -63,8 +63,6 @@ static void free(void *where)
 | |
|  
 | |
|  #define set_error_fn(x)
 | |
|  
 | |
| -#define INIT
 | |
| -
 | |
|  #else /* STATIC */
 | |
|  
 | |
|  /* Code active when compiled standalone for use when loading ramdisk: */
 | |
| @@ -87,7 +85,6 @@ static void free(void *where)
 | |
|  static void(*error)(char *m);
 | |
|  #define set_error_fn(x) error = x;
 | |
|  
 | |
| -#define INIT __init
 | |
|  #define STATIC
 | |
|  
 | |
|  #include <linux/init.h>
 | |
| --- /dev/null
 | |
| +++ b/include/linux/decompress/unlzma_mm.h
 | |
| @@ -0,0 +1,20 @@
 | |
| +#ifndef UNLZMA_MM_H
 | |
| +#define UNLZMA_MM_H
 | |
| +
 | |
| +#ifdef STATIC
 | |
| +
 | |
| +/* Code active when included from pre-boot environment: */
 | |
| +#define INIT
 | |
| +
 | |
| +#elif defined(CONFIG_DECOMPRESS_LZMA_NEEDED)
 | |
| +
 | |
| +/* Make it available to non initramfs/initrd code */
 | |
| +#define INIT
 | |
| +#include <linux/module.h>
 | |
| +#else
 | |
| +
 | |
| +/* Compile for initramfs/initrd code only */
 | |
| +#define INIT __init
 | |
| +#endif
 | |
| +
 | |
| +#endif
 | |
| --- a/lib/Kconfig
 | |
| +++ b/lib/Kconfig
 | |
| @@ -124,6 +124,9 @@ config DECOMPRESS_LZO
 | |
|  	select LZO_DECOMPRESS
 | |
|  	tristate
 | |
|  
 | |
| +config DECOMPRESS_LZMA_NEEDED
 | |
| +	 boolean
 | |
| +
 | |
|  #
 | |
|  # Generic allocator support is selected if needed
 | |
|  #
 | |
| --- a/lib/decompress_bunzip2.c
 | |
| +++ b/lib/decompress_bunzip2.c
 | |
| @@ -52,6 +52,7 @@
 | |
|  #include <linux/slab.h>
 | |
|  #endif /* STATIC */
 | |
|  
 | |
| +#include <linux/decompress/bunzip2_mm.h>
 | |
|  #include <linux/decompress/mm.h>
 | |
|  
 | |
|  #ifndef INT_MAX
 | |
| --- a/lib/decompress_inflate.c
 | |
| +++ b/lib/decompress_inflate.c
 | |
| @@ -23,6 +23,7 @@
 | |
|  
 | |
|  #endif /* STATIC */
 | |
|  
 | |
| +#include <linux/decompress/inflate_mm.h>
 | |
|  #include <linux/decompress/mm.h>
 | |
|  
 | |
|  #define GZIP_IOBUF_SIZE (16*1024)
 | |
| --- a/lib/decompress_unlzma.c
 | |
| +++ b/lib/decompress_unlzma.c
 | |
| @@ -36,6 +36,7 @@
 | |
|  #include <linux/slab.h>
 | |
|  #endif /* STATIC */
 | |
|  
 | |
| +#include <linux/decompress/unlzma_mm.h>
 | |
|  #include <linux/decompress/mm.h>
 | |
|  
 | |
|  #define	MIN(a, b) (((a) < (b)) ? (a) : (b))
 | |
| @@ -531,7 +532,7 @@ static inline void INIT process_bit1(str
 | |
|  
 | |
|  
 | |
|  
 | |
| -STATIC inline int INIT unlzma(unsigned char *buf, int in_len,
 | |
| +STATIC int INIT unlzma(unsigned char *buf, int in_len,
 | |
|  			      int(*fill)(void*, unsigned int),
 | |
|  			      int(*flush)(void*, unsigned int),
 | |
|  			      unsigned char *output,
 | |
| @@ -664,4 +665,6 @@ STATIC int INIT decompress(unsigned char
 | |
|  {
 | |
|  	return unlzma(buf, in_len - 4, fill, flush, output, posp, error_fn);
 | |
|  }
 | |
| +#elif defined(CONFIG_DECOMPRESS_LZMA_NEEDED)
 | |
| +EXPORT_SYMBOL(unlzma);
 | |
|  #endif
 |