2.2.0(pre1) still Oops mouting strange floppy

christophe.leroy5@capway.com
Tue, 29 Dec 1998 11:02:17 +0100


Hi all,

I know I shouldn't try to mount a disk that contains a 2.1.131 kernel
and a compressed rd at block 450, but It should however not Oops.
Appens in fs/fat/inode.c, fonction fat_read_super, after
having detected my disk as a FAT32 fs.

Dec 29 10:44:21 (none) kernel: VFS: Disk change detected on
device fd(2,0)
Dec 29 10:44:22 (none) kernel: Unable to handle kernel paging
request at virtual address c438b6e4
Dec 29 10:44:22 (none) kernel: current->tss.cr3 = 03e59000, %cr3
= 03e59000
Dec 29 10:44:22 (none) kernel: *pde = 00000000
Dec 29 10:44:22 (none) kernel: Oops: 0000
Dec 29 10:44:22 (none) kernel: CPU: 0
Dec 29 10:44:22 (none) kernel: EIP:
0010:[fat_read_super+632/2056]
Dec 29 10:44:22 (none) kernel: EFLAGS: 00010282
Dec 29 10:44:22 (none) kernel: eax: c438b6e0 ebx: 00000000
ecx: 00000200 edx: c3dee720
Dec 29 10:44:22 (none) kernel: esi: 00000000 edi: f357fc06 ebp:
c3c35a00 esp: c3e47da8
Dec 29 10:44:22 (none) kernel: ds: 0018 es: 0018 ss: 0018
Dec 29 10:44:22 (none) kernel: Process mount (pid: 40, process
nr: 15, stackpage=c3e47000)
Dec 29 10:44:22 (none) kernel: Stack: c01fadc8 00000200
00000000 00000000 0307eeaf c0138c63 00000307 ff000086
Dec 29 10:44:22 (none) kernel: c3dee720 00000001 c438b6e0
00000000 c0123879 00000307 00000000 00000100
Dec 29 10:44:22 (none) kernel: c3d91000 00000000 00000200
00000000 c0123f00 00000307 00092009 00000400
Dec 29 10:44:22 (none) kernel: Call Trace: [inode_getblk+71/456]
[get_hash_table+29/96] [refill_freelist+1032/1104] [__brelse+35/68]
[ext2_read_inode+725/980] [get_new_inode+179/284]
[d_add+77/84]
Dec 29 10:44:22 (none) kernel: [ext2_lookup+107/120]
[msdos_read_super+35/68] [UMSDOS_read_super+29/232]
[read_super+138/176] [do_mount+161/268]
[devfsd_buf_size+3445/3657] [sys_mount+740/840]
[devfsd_buf_size+3445/3657]
Dec 29 10:44:22 (none) kernel: [system_call+52/64]
Dec 29 10:44:22 (none) kernel: Code: 8b 48 04 81 f9 72 72 41 61
74 11 51 68 40 57 1d c0 e8 62 1d

Code: c0140498 <fat_read_super+278/808>
Code: c0140498 <fat_read_super+278/808> 8b 48 04 movl
0x4(%eax),%ecx
Code: c014049b <fat_read_super+27b/808> 81 f9 72 72 41 cmpl
$0x61417272,%ecx
Code: c01404a1 <fat_read_super+281/808> 74 11 je
c01404b4 <fat_read_super+294/808>
Code: c01404a3 <fat_read_super+283/808> 51 pushl
%ecx
Code: c01404a4 <fat_read_super+284/808> 68 40 57 1d c0
pushl $0xc01d5740
Code: c01404a9 <fat_read_super+289/808> e8 62 1d 00 90 call
90001d78 <_EIP+0x90001d78>
Code: c01404ae <fat_read_super+28e/808> 90 nop
Code: c01404af <fat_read_super+28f/808> 90 nop

struct fat_boot_fsinfo *fsinfo;

/* Must be FAT32 */
fat32 = 1;
MSDOS_SB(sb)->fat_length= CF_LE_W(b-
>fat32_length)*sector_mult;
MSDOS_SB(sb)->root_cluster = CF_LE_L(b->root_cluster);
MSDOS_SB(sb)->fsinfo_offset =
CF_LE_W(b->info_sector) * logical_sector_size +
0x1e0;
fsinfo = (struct fat_boot_fsinfo *)
&bh->b_data[MSDOS_SB(sb)->fsinfo_offset];
if (CF_LE_L(fsinfo->signature) != 0x61417272) {
printk("fat_read_super: Did not find valid FSINFO "
"signature. Found 0x%x\n",
CF_LE_L(fsinfo->signature));

Problem happens in the last if, just before the comparison.

christophe

-
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/