[ZLIB]: Fix external builds of zlib_inflate code.
David S. Miller [Fri, 12 Oct 2007 05:15:08 +0000 (22:15 -0700)]
Move zlib_inflate_blob() out into it's own source file,
infutil.c, so that things like the powerpc zImage builder
in arch/powerpc/boot/Makefile don't end up trying to
compile it.

Signed-off-by: David S. Miller <davem@davemloft.net>

lib/zlib_inflate/Makefile
lib/zlib_inflate/inflate.c
lib/zlib_inflate/infutil.c [new file with mode: 0644]

index bf06548..49f8ce5 100644 (file)
@@ -15,5 +15,5 @@
 
 obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate.o
 
-zlib_inflate-objs := inffast.o inflate.o \
+zlib_inflate-objs := inffast.o inflate.o infutil.o \
                     inftrees.o inflate_syms.o
index 0ad1ebf..f5ce87b 100644 (file)
@@ -916,50 +916,3 @@ int zlib_inflateIncomp(z_stream *z)
 
     return Z_OK;
 }
-
-#include <linux/errno.h>
-#include <linux/slab.h>
-#include <linux/vmalloc.h>
-
-/* Utility function: initialize zlib, unpack binary blob, clean up zlib,
- * return len or negative error code. */
-int zlib_inflate_blob(void *gunzip_buf, unsigned sz, const void *buf, unsigned len)
-{
-       const u8 *zbuf = buf;
-       struct z_stream_s *strm;
-       int rc;
-
-       rc = -ENOMEM;
-       strm = kmalloc(sizeof(*strm), GFP_KERNEL);
-       if (strm == NULL)
-               goto gunzip_nomem1;
-       strm->workspace = kmalloc(zlib_inflate_workspacesize(), GFP_KERNEL);
-       if (strm->workspace == NULL)
-               goto gunzip_nomem2;
-
-       /* gzip header (1f,8b,08... 10 bytes total + possible asciz filename)
-        * expected to be stripped from input */
-
-       strm->next_in = zbuf;
-       strm->avail_in = len;
-       strm->next_out = gunzip_buf;
-       strm->avail_out = sz;
-
-       rc = zlib_inflateInit2(strm, -MAX_WBITS);
-       if (rc == Z_OK) {
-               rc = zlib_inflate(strm, Z_FINISH);
-               /* after Z_FINISH, only Z_STREAM_END is "we unpacked it all" */
-               if (rc == Z_STREAM_END)
-                       rc = sz - strm->avail_out;
-               else
-                       rc = -EINVAL;
-               zlib_inflateEnd(strm);
-       } else
-               rc = -EINVAL;
-
-       kfree(strm->workspace);
-gunzip_nomem2:
-       kfree(strm);
-gunzip_nomem1:
-       return rc; /* returns Z_OK (0) if successful */
-}
diff --git a/lib/zlib_inflate/infutil.c b/lib/zlib_inflate/infutil.c
new file mode 100644 (file)
index 0000000..4824c2c
--- /dev/null
@@ -0,0 +1,49 @@
+#include <linux/zutil.h>
+#include <linux/errno.h>
+#include <linux/slab.h>
+#include <linux/vmalloc.h>
+
+/* Utility function: initialize zlib, unpack binary blob, clean up zlib,
+ * return len or negative error code.
+ */
+int zlib_inflate_blob(void *gunzip_buf, unsigned int sz,
+                     const void *buf, unsigned int len)
+{
+       const u8 *zbuf = buf;
+       struct z_stream_s *strm;
+       int rc;
+
+       rc = -ENOMEM;
+       strm = kmalloc(sizeof(*strm), GFP_KERNEL);
+       if (strm == NULL)
+               goto gunzip_nomem1;
+       strm->workspace = kmalloc(zlib_inflate_workspacesize(), GFP_KERNEL);
+       if (strm->workspace == NULL)
+               goto gunzip_nomem2;
+
+       /* gzip header (1f,8b,08... 10 bytes total + possible asciz filename)
+        * expected to be stripped from input
+        */
+       strm->next_in = zbuf;
+       strm->avail_in = len;
+       strm->next_out = gunzip_buf;
+       strm->avail_out = sz;
+
+       rc = zlib_inflateInit2(strm, -MAX_WBITS);
+       if (rc == Z_OK) {
+               rc = zlib_inflate(strm, Z_FINISH);
+               /* after Z_FINISH, only Z_STREAM_END is "we unpacked it all" */
+               if (rc == Z_STREAM_END)
+                       rc = sz - strm->avail_out;
+               else
+                       rc = -EINVAL;
+               zlib_inflateEnd(strm);
+       } else
+               rc = -EINVAL;
+
+       kfree(strm->workspace);
+gunzip_nomem2:
+       kfree(strm);
+gunzip_nomem1:
+       return rc; /* returns Z_OK (0) if successful */
+}