[RFC][PATCH] making ubifs compile with gcc-3.4

Hamish Moffatt hamish at cloud.net.au
Fri May 2 01:22:11 EDT 2008


ubifs fails to compile with my gcc 3.4.4 (for arm), bombing with:

fs/built-in.o: In function `ubifs_create_dflt_lpt':
lpt_commit.c:(.text+0x88690): undefined reference to `__you_cannot_kmalloc_that_much'
make[1]: *** [.tmp_vmlinux1] Error 1

It compiles with 4.1.2 ok though. Some web searches suggest that this is
due to a compiler bug. Patches have been applied in other parts of the 
tree to work around this so perhaps you'll consider this patch for ubifs 
also.

I found that rearranging the kmalloc order makes it compile. I don't
believe there is any effect on the behaviour.

Signed-off-by: Hamish Moffatt <hamish at cloud.net.au>

--

--- a/fs/ubifs/lpt.c	(revision 4400)
+++ b/fs/ubifs/lpt.c	(working copy)
@@ -597,11 +597,11 @@
 	/* Needed by 'ubifs_pack_lsave()' */
 	c->main_first = c->leb_cnt - *main_lebs;
 
+	lsave = kmalloc(sizeof(int) * c->lsave_cnt, GFP_KERNEL);
 	pnode = kzalloc(sizeof(struct ubifs_pnode), GFP_KERNEL);
 	nnode = kzalloc(sizeof(struct ubifs_nnode), GFP_KERNEL);
 	buf = vmalloc(c->leb_size);
 	ltab = vmalloc(sizeof(struct ubifs_lpt_lprops) * c->lpt_lebs);
-	lsave = kmalloc(sizeof(int) * c->lsave_cnt, GFP_KERNEL);
 	if (!pnode || !nnode || !buf || !ltab || !lsave) {
 		err = -ENOMEM;
 		goto out;

-- 
Hamish Moffatt VK3SB <hamish at debian.org> <hamish at cloud.net.au>



More information about the linux-mtd mailing list