Re: [PATCH] hfsplus: don't oops on bad FS

From: Colin Leroy
Date: Tue Apr 26 2005 - 02:17:38 EST


On Tue, 26 Apr 2005 08:59:14 +0200
Colin Leroy <colin@xxxxxxxxxx> wrote:

> cleanup:
> + kfree(sb->s_fs_info);
> + sb->s_fs_info = NULL;
> +

Also, that may be wrong: maybe hfsplus_put_super has a job to do if
mounting fails later than "no hfs+ fs found".

My understanding of the driver is limited, that's why my initial patch
did the less possible functionality change. But I'd like to remember
you (maybe you forgot) that my initial patch wasn't about fixing the
s_fs_info leak, but rather fixing an oops that happens in
hfsplus_put_super. That's why I don't think we can run the current code
in hfsplus_put_super from hfsplus_fill_super cleanup part :

HFS+-fs: unable to find HFS+ superblock
Oops: kernel access of bad area, sig: 11 [#1]
NIP: EA4707F4 LR: EA470AC8 SP: CC91DAA0 REGS: cc91d9f0 TRAP: 0300 Not tainted
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000004, DSISR: 40000000
TASK = ce48cdf0[20295] 'mount' THREAD: cc91c000
Last syscall: 21
GPR00: 00000000 CC91DAA0 CE48CDF0 CB2FF200 C0373ECC 00000004 E756CD60 3B9ACA00
GPR08: C2B71F60 C0360000 00000000 BE932A74 0000D903 1002957C 10020000 10026810
GPR16: 100267E0 10026840 7FF3F4DD 100267D0 7FF3F4B3 00000000 10026820 10026820
GPR24: 7FF3EF70 EA4709EC EA105714 00000000 00000000 C9341000 C2B71F60 CB2FF200
NIP [ea4707f4] hfsplus_put_super+0x9c/0x114 [hfsplus]
LR [ea470ac8] hfsplus_fill_super+0xdc/0x5a8 [hfsplus]
Call trace:
[ea470ac8] hfsplus_fill_super+0xdc/0x5a8 [hfsplus]
[c00644e4] get_sb_bdev+0x14c/0x1d4
[ea471018] hfsplus_get_sb+0x18/0x28 [hfsplus]
[c0064824] do_kern_mount+0x5c/0x130
[c007c774] do_mount+0x46c/0x6cc
[c007ce18] sys_mount+0x98/0xe8
[c0004840] ret_from_syscall+0x0/0x44

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