Re: Oops with loop devices on 2.6.9

From: Andries Brouwer
Date: Sun Nov 14 2004 - 17:05:53 EST


On Fri, Nov 12, 2004 at 02:49:34AM -0800, Chris Spiegel wrote:

> While playing around with loop mounts on kernel 2.6.9 I managed to get
> a kernel panic. After messing around with it I can reproduce the
> problem reliably. The sequence I came up with to cause the problem:
>
> mount -o loop /dev/loop/0 /mnt
> mount -o loop /dev/loop/1 /mnt
> mount -o loop /dev/loop/2 /mnt
> mount /dev/loop/0 /mnt -t ext2
>
> Unable to handle kernel paging request at virtual address 98858a6f
> printing eip:
> c011345a
> *pde = 00000000
> Oops: 0000 [#1]
> SMP
> Modules linked in:
> CPU 0
> EIP 0060:[<c011345a>] Not tainted VLI
> EFLAGS 00010083 (2.6.9)
> EIP is at do_page_fault+0x99/0x599
> eax: c9100000 ebx: 65642f3c ecx: 0000007b edx: f7d4858b
> esi: 00000000 edi: c01133c1 ebp: 988589ff esp: c9100108
> ds: 007b es: 007b ss: 0068
> Unable to handle kernel NULL pointer dereference at virtual address 00000070
> printing eip:
> c011345a
> *pde = 00000000

I do not see precisely the same - but I do not use devfs.
What happens for me is: the "mount -o loop /dev/loop0 /mnt"
takes the first unused loop device, /dev/loop0, and then
does "losetup /dev/loop0 /dev/loop0", and then does mount.
But there is a loop in the loop devices and the kernel dies in
infinite recursion.

The easiest fix is saying "don't do that then".
But, on the other hand, maybe it is reasonable to add a check.
Hope to send a patch later this evening.

Andries
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/