Re: loop-AES 1.4d crypto swap => __alloc_pages: 0-order allocation failed (gfp=0x20/0) from c882256e

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hank Leininger wrote:
> On 2001-09-25, "peter k." <spam-goes-to-dev-null@xxxxxxx> wrote:
> 
> > yesterday i configured my box to use swap over loop-AES....
> > if i cat /dev/zero > blah now on another loop-AES encrypted device (not
> > on the swap device of course) "__alloc_pages: 0-order allocation failed
> > (gfp=0x20/0) from c882256e" starts and keeps appearing when the kernel
> > wants to start swapping until it panics within the process of the loop
> > device i was cat'ing to....i guess this error is caused by loop-AES
> 
> Funny, I was just about to post about something similar...
> 
> I've found that I cannot use the latest loop-AES on 2.4.9 (at least) with a
> partition-backed loop device larger than 2 GB.  The stock loop driver in
> 2.4.9 works fine with large (dozens of GBs) loop devices, but the loop-AES
> driver causes kernel panics.  Using loop-AES, losetup'ing (with or without
> encryption) a 10-20 GB partition and then trying to mke2fs /dev/loop0 will
> result in a panic.  A 2 GB partition is rock solid.  A 2.2 GB partition
> will successfully mkfs and mount, but then trying to dd if=/dev/zero
> of=/mnt/testfile will cause a panic once the file passes the 2 GB mark.

Can both of you try this patch, and try to repeat the problem.

    cd loop-AES-v1.4d
    patch -p0 < filename
    make

Regards,
Jari Ruusu <jari.ruusu@xxxxxxxxxx>


--- loop.c-2.4.diff.old	Sun Sep  2 21:33:01 2001
+++ loop.c-2.4.diff	Tue Sep 25 21:51:28 2001
@@ -261,12 +261,12 @@
 +        memset(bh, 0, sizeof(struct buffer_head));
 +        bh->b_page = p;
 +    } else {
-+        bh = kmem_cache_alloc(bh_cachep, SLAB_ATOMIC);
++        bh = kmem_cache_alloc(bh_cachep, SLAB_NOIO);
 +        if(!bh) {
 +            return((struct buffer_head *)0);
 +        }
 +        memset(bh, 0, sizeof(struct buffer_head));
-+        bh->b_page = alloc_page(GFP_ATOMIC);
++        bh->b_page = alloc_page(GFP_NOIO);
 +        if(!bh->b_page) {
 +            kmem_cache_free(bh_cachep, bh);
 +            return((struct buffer_head *)0);


Linux-crypto:  cryptography in and on the Linux system
Archive:       http://mail.nl.linux.org/linux-crypto/


[Index of Archives]     [Kernel]     [Linux Crypto]     [Gnu Crypto]     [Gnu Classpath]     [Netfilter]     [Bugtraq]
  Powered by Linux