[kernel] Add missing kernel configuration options.
[openwrt.git] / target / linux / brcm47xx / patches-2.6.28 / 500-lzma_initramfs.patch
index dc49e12..6a4a666 100644 (file)
@@ -1,6 +1,14 @@
 --- a/init/initramfs.c
 +++ b/init/initramfs.c
-@@ -475,6 +475,69 @@ static void __init flush_window(void)
+@@ -7,6 +7,7 @@
+ #include <linux/string.h>
+ #include <linux/syscalls.h>
+ #include <linux/utime.h>
++#include <linux/vmalloc.h>
+ static __initdata char *message;
+ static void __init error(char *x)
+@@ -475,6 +476,69 @@ static void __init flush_window(void)
        outcnt = 0;
  }
  
 +      workspace_size = ((LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp))) * sizeof(CProb)) + 100;
 +      printk( KERN_NOTICE "initramfs: LZMA lc=%d,lp=%d,pb=%d,origSize=%d\n",
 +      lc,lp,pb,osize);
-+      outputbuffer = kmalloc(osize, GFP_KERNEL);
++      outputbuffer = vmalloc(osize);
 +      if (outputbuffer == 0) {
 +              printk(KERN_ERR "initramfs: Couldn't allocate lzma output buffer\n");
 +              return -1;
 +      }
 +
-+      workspace = kmalloc(workspace_size, GFP_KERNEL);
++      workspace = vmalloc(workspace_size);
 +      if (workspace == NULL) {
 +              printk(KERN_ERR "initramfs: Couldn't allocate lzma workspace\n");
 +              return -1;
@@ -61,8 +69,8 @@
 +      flush_buffer(outputbuffer, outsizeProcessed);
 +      inptr = insize;
 +
-+      kfree(outputbuffer);
-+      kfree(workspace);
++      vfree(outputbuffer);
++      vfree(workspace);
 +      state = Reset;
 +      return 0;
 +}
@@ -70,7 +78,7 @@
  static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
  {
        int written;
-@@ -509,12 +572,28 @@ static char * __init unpack_to_rootfs(ch
+@@ -509,12 +573,28 @@ static char * __init unpack_to_rootfs(ch
                inptr = 0;
                outcnt = 0;             /* bytes in output buffer */
                bytes_out = 0;
This page took 0.023731 seconds and 4 git commands to generate.