Quota in Linux 2.2.1 generates kernel oops

Jensen Allan AJE (aje@arcodan.dk)
22 Feb 1999 15:20:00 -0000


Hi there.

I accidentally stumbled over a kernel Oops while playing around with quotas.

Here's the scenario:

I created a user, and copied several megabytes into the username's home
directory.
I created a hard disk space quota pretty much below the actual usage level,
thereby preventing the user to write any data. I updated the quota usage and
enabled the quota on that partition (I've only got a single partition, so
effectively the entire disk was write protected for the plain old user)
Then I did a lot of things as root, thereby pouring data into the disk write
cache. (running startx, then killing it with CTRL+C etc.)
Then I typed 'sync' as the ordinary user, and suddenly I got a kernel Oops.
I have encountered this problem as well on a different machine with a different
2.2.1 compile. No -ac or -pre, just vanilla 2.2.1 in both cases.

I can reproduce this error by doing as described above. I've also run the
ksymoops, so you can see what's going on.

(copied the Oops information into a text file and executed
'/usr/src/linux/scripts/ksymoops/ksymoops <textfile')

<----------------------------------snip---------------------------------->
Options used: -V (default)
-o /lib/modules/2.2.1/ (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-m /usr/src/linux/System.map (default)
-c 1 (default)

You did not tell me where to find symbol information. I will assume
that the log matches the kernel and modules that are running right now
and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc. ksymoops -h explains the options.

Warning in compare_ksyms_lsmod, module 3c59x is in lsmod but not in ksyms,
probably no symbols exported
Warning in compare_ksyms_lsmod, module ip_masq_mfw is in lsmod but not in ksyms,
probably no symbols exported
Warning in compare_ksyms_lsmod, module ip_masq_portfw is in lsmod but not in
ksyms, probably no symbols exported
Warning in compare_ksyms_lsmod, module isofs is in lsmod but not in ksyms,
probably no symbols exported
Unable to handle kernel NULL pointer dereference at virtual address 00000030
current->tss.cr3 = 01f30000, %cr3 = 01f30000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0131b32>]
EFLAGS: 00010296
eax: c1710004 ebx: c17d3bc0 ecx: 00000000 edx: 00000001
esi: c17d3b60 edi: 0804ffff ebp: bfff0000 esp: c25f5f70
ds: 0018 es: 0018 ss: 0018
Process sync (pid: 5700, process nr: 31, stackpage=c25f5000)
Stack: 0804ffff bfff0000 00003ec0 00000000 c0131dda c17d3bc0 00000000 00000001
08048680 bffffd88 c0124022 00000000 ffffffff 00000000 00000000 00000000
00000000 c25f4000 c0124037 00000000 c0108918 bffffda4 00000000 4009d9ef
Call Trace: [<c0131dda>] [<c0124022>] [<c0124037>] [<c0108918>]
Code: 8b 74 91 2c f6 43 2c 01 74 09 53 e8 52 ff ff ff 83 c4 04 80

>>EIP: c0131b32 <write_dquot+12/d8>
Trace: c0131dda <sync_dquots+52/74>
Trace: c0124022 <fsync_dev+22/30>
Trace: c0124037 <sys_sync+7/10>
Trace: c0108918 <system_call+34/38>
Code: c0131b32 <write_dquot+12/d8> 00000000 <_EIP>:
Code: c0131b32 <write_dquot+12/d8> 0: 8b 74 91 2c movl
0x2c(%ecx,%edx,4),%esi
Code: c0131b36 <write_dquot+16/d8> 4: f6 43 2c 01
testb $0x1,0x2c(%ebx)
Code: c0131b3a <write_dquot+1a/d8> 8: 74 09 je
13 <_EIP+0x13> c0131b45 <write_dquot+25/d8>
Code: c0131b3c <write_dquot+1c/d8> a: 53
pushl %ebx
Code: c0131b3d <write_dquot+1d/d8> b: e8 52 ff ff ff call
ffffff62 <_EIP+0xffffff62> c0131a94 <__wait_on_dquot+0/8c>
Code: c0131b42 <write_dquot+22/d8> 10: 83 c4 04 addl
$0x4,%esp
Code: c0131b45 <write_dquot+25/d8> 13: 80 00 00 addb
$0x0,(%eax)

Unable to handle kernel NULL pointer dereference at virtual address 00000030
current->tss.cr3 = 0154e000, %cr3 = 0154e000
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0131b32>]
EFLAGS: 00010296
eax: c1710004 ebx: c17d3bc0 ecx: 00000000 edx: 00000001
esi: c17d3b60 edi: 0804ffff ebp: bfff0000 esp: c085df70
ds: 0018 es: 0018 ss: 0018
Process sync (pid: 5729, process nr: 47, stackpage=c085d000)
Stack: 0804ffff bfff0000 00000020 00000000 c0131dda c17d3bc0 00000000 00000001
08048680 bffffd88 c0124022 00000000 ffffffff 00000000 00000000 00000000
00000000 c085c000 c0124037 00000000 c0108918 bffffda4 00000000 4009d9ef
Call Trace: [<c0131dda>] [<c0124022>] [<c0124037>] [<c0108918>]
Code: 8b 74 91 2c f6 43 2c 01 74 09 53 e8 52 ff ff ff 83 c4 04 80

>>EIP: c0131b32 <write_dquot+12/d8>
Trace: c0131dda <sync_dquots+52/74>
Trace: c0124022 <fsync_dev+22/30>
Trace: c0124037 <sys_sync+7/10>
Trace: c0108918 <system_call+34/38>
Code: c0131b32 <write_dquot+12/d8> 00000000 <_EIP>:
Code: c0131b32 <write_dquot+12/d8> 0: 8b 74 91 2c movl
0x2c(%ecx,%edx,4),%esi
Code: c0131b36 <write_dquot+16/d8> 4: f6 43 2c 01
testb $0x1,0x2c(%ebx)
Code: c0131b3a <write_dquot+1a/d8> 8: 74 09 je
13 <_EIP+0x13> c0131b45 <write_dquot+25/d8>
Code: c0131b3c <write_dquot+1c/d8> a: 53
pushl %ebx
Code: c0131b3d <write_dquot+1d/d8> b: e8 52 ff ff ff call
ffffff62 <_EIP+0xffffff62> c0131a94 <__wait_on_dquot+0/8c>
Code: c0131b42 <write_dquot+22/d8> 10: 83 c4 04 addl
$0x4,%esp
Code: c0131b45 <write_dquot+25/d8> 13: 80 00 00 addb
$0x0,(%eax)

5 warnings issued. Results may not be reliable.

<----------------------------------snip---------------------------------->

Hope someone may have time to look into this bug, as I can imagine that it may
cause some unpleasant consequences.

Best regards,
_______________________________________________________________________
Allan Jensen Scientific Atlanta Arcodan A/S Phone +45 73122150
System Administrator Augustenborg Landevej 7 Direct +45 73122154
IT-Support DK-6400 Sonderborg Fax +45 74423907
aje@sciatl.dk http://www.arcodan.com

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