Index: compcache.c
===================================================================
--- compcache.c	(revision 95)
+++ compcache.c	(working copy)
@@ -283,6 +283,12 @@
 		compcache_size_kbytes = ((DEFAULT_COMPCACHE_PERCENT *
 				i.totalram) / 100) << (PAGE_SHIFT - 10);
 	}
+
+	if (compcache_size_kbytes > MAX_COMPCACHE_SIZE_KBYTES) {
+		pr_info(C "Reducing compressed swap size from requested %lu KB"
+			" to maximum supported size.\n", compcache_size_kbytes);
+		compcache_size_kbytes = MAX_COMPCACHE_SIZE_KBYTES;
+	}
 	
 	CC_DEBUG2("compcache_size_kbytes=%lu\n", compcache_size_kbytes);
 	compcache.size = compcache_size_kbytes << 10;
Index: compcache.h
===================================================================
--- compcache.h	(revision 95)
+++ compcache.h	(working copy)
@@ -21,6 +21,11 @@
 #define SECTORS_PER_PAGE_SHIFT	(PAGE_SHIFT - SECTOR_SHIFT)
 #define SECTORS_PER_PAGE	(1 << SECTORS_PER_PAGE_SHIFT)
 
+#define MAX_UL_INT ((unsigned long int)0xffffffff)
+
+#define MAX_COMPCACHE_SIZE        (MAX_UL_INT-PAGE_SIZE+1) 
+#define MAX_COMPCACHE_SIZE_KBYTES (K(MAX_COMPCACHE_SIZE)) 
+
 /*-- Configurable parameters */
 /* Default compcache size: 25% of total RAM */
 #define DEFAULT_COMPCACHE_PERCENT	25