Re: Mounting corrupted HFS+ causes kernel NULL pointer dereference

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

 



Hello,

> but was the original issue solved?
Yes, after removing the suggested line and applying patch [2] on top
of v4.17, when I try to mount the original FS image, mount just
returns Invalid argument, no kernel NULL pointer dereferences anymore:

mount: mounting /dev/sda on /mnt failed: Invalid argument
[    4.840690] exe (993) used greatest stack depth: 12872 bytes left

Thank you!

ср, 13 июн. 2018 г. в 0:35, Ernesto A. Fernández
<ernesto.mnd.fernandez@xxxxxxxxx>:
>
> Hi:
>
> On Tue, Jun 12, 2018 at 09:43:26PM +0300, Anatoly Trosinenko wrote:
> > Hello,
> >
> > > [1] https://www.spinics.net/lists/linux-fsdevel/msg125241.html
> > > [2] https://www.spinics.net/lists/linux-fsdevel/msg126499.html
> >
> > If I get it right, the first patch is already upstreamed in some
> > modified form and cannot be applied on top of vanilla v4.17.
>
> The first part of the patchset was already picked up, but your report
> is related to the second part, which is the link at [1]. It should
> still apply.
>
> > When I
> > apply the second one I get
> >
> > $ patch -p1 < ../hfsplus-2.patch
> > patching file fs/hfsplus/dir.c
> > patching file fs/hfsplus/hfsplus_fs.h
> > patching file fs/hfsplus/inode.c
> > patching file fs/hfsplus/super.c
> > Hunk #3 FAILED at 567.
> > Hunk #4 succeeded at 586 (offset 1 line).
> > 1 out of 4 hunks FAILED -- saving rejects to file fs/hfsplus/super.c.rej
> > $ cat fs/hfsplus/super.c.rej
> > --- fs/hfsplus/super.c
> > +++ fs/hfsplus/super.c
> > @@ -567,11 +547,6 @@ static int hfsplus_fill_super(struct super_block
> > *sb, void *data, int silent)
> >         sbi->nls = nls;
> >         return 0;
> >
> > -out_put_hidden_dir:
> > -       iput(sbi->hidden_dir);
> > -out_put_root:
> > -       dput(sb->s_root);
> > -       sb->s_root = NULL;
> >  out_put_alloc_file:
> >         iput(sbi->alloc_file);
> >  out_close_attr_tree:
>
> That's because a patch by Tetsuo Handa added a call to
> cancel_delayed_work_sync() after the out_put_hidden_dir tag. Just remove
> that line before applying the patch.
>
> >
> > Looks, like manually removing this hunk cannot change anything
> > (because of previous return), so just left as is.
>
> Ok, that should be enough for testing. The rest of your mail seems like a
> separate bug report, though. I'll take a look at it, but was the original
> issue solved?
>
> >
> > Now, when mounting the attached hfsplus_16mb_segv to /mnt and
> > performing `dd if=/dev/zero of=/mnt/xyz bs=567879 count=1` I get
> >
> > [    1.646451] BUG: unable to handle kernel NULL pointer dereference
> > at 0000000000000043
> > [    1.646666] PGD 1d4d2067 P4D 1d4d2067 PUD 1d4bc067 PMD 0
> > [    1.646870] Oops: 0000 [#1] SMP NOPTI
> > [    1.647002] Modules linked in:
> > [    1.647209] CPU: 0 PID: 991 Comm: init Not tainted 4.17.0+ #1
> > [    1.647291] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
> > BIOS 1.10.2-1ubuntu1 04/01/2014
> > [    1.647456] RIP: 0010:hfsplus_bnode_put+0x9/0xc0
> > [    1.647522] RSP: 0018:ffffb750409b7a58 EFLAGS: 00000282
> > [    1.647607] RAX: ffffa3b31e713000 RBX: 000000000a000000 RCX: 0000000011000000
> > [    1.647696] RDX: 0000000000000000 RSI: ffffffff85ca56d0 RDI: fffffffffffffffb
> > [    1.647787] RBP: ffffa3b31d473288 R08: 0000000000000000 R09: ffffb750409b7960
> > [    1.647877] R10: 0000000000000000 R11: ffffa3b31df0e618 R12: ffffb750409b7ad0
> > [    1.647967] R13: ffffa3b31d473180 R14: ffffa3b31d432a00 R15: 000000000000000a
> > [    1.648089] FS:  0000000001dd48c0(0000) GS:ffffa3b31f800000(0000)
> > knlGS:0000000000000000
> > [    1.648192] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [    1.648268] CR2: 0000000000000043 CR3: 000000001d4c4000 CR4: 00000000000006f0
> > [    1.648406] Call Trace:
> > [    1.648883]  hfsplus_brec_find+0x3c/0x150
> > [    1.648970]  ? hfsplus_brec_remove+0x160/0x160
> > [    1.649037]  hfsplus_ext_read_extent.part.6+0xba/0x190
> > [    1.649118]  ? clean_bdev_aliases+0x81/0x1d0
> > [    1.649178]  hfsplus_file_extend+0x16b/0x3a0
> > [    1.649238]  hfsplus_get_block+0x60/0x250
> > [    1.649293]  ? hfsplus_file_extend+0x3a0/0x3a0
> > [    1.649352]  __block_write_begin_int+0x134/0x550
> > [    1.649414]  ? hfsplus_file_extend+0x3a0/0x3a0
> > [    1.649476]  ? percpu_counter_add_batch+0x48/0x60
> > [    1.649537]  ? hfsplus_file_extend+0x3a0/0x3a0
> > [    1.649596]  block_write_begin+0x3f/0xa0
> > [    1.649652]  cont_write_begin+0x232/0x330
> > [    1.649713]  ? hfsplus_file_extend+0x3a0/0x3a0
> > [    1.649776]  hfsplus_write_begin+0x2f/0x70
> > [    1.649834]  ? hfsplus_file_extend+0x3a0/0x3a0
> > [    1.649902]  generic_perform_write+0xb1/0x1b0
> > [    1.649965]  __generic_file_write_iter+0xfd/0x190
> > [    1.650031]  generic_file_write_iter+0xe1/0x1e0
> > [    1.650095]  __vfs_write+0xfc/0x160
> > [    1.650148]  vfs_write+0xa8/0x190
> > [    1.650196]  ksys_write+0x4d/0xb0
> > [    1.650245]  do_syscall_64+0x43/0xf0
> > [    1.650301]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
> > [    1.650465] RIP: 0033:0x486804
> > [    1.650510] RSP: 002b:00007ffd156ba4e8 EFLAGS: 00000246 ORIG_RAX:
> > 0000000000000001
> > [    1.650611] RAX: ffffffffffffffda RBX: 0000000001dd48a0 RCX: 0000000000486804
> > [    1.650695] RDX: 000000000008aa47 RSI: 00007ff996f60010 RDI: 0000000000000001
> > [    1.650779] RBP: 0000000000000001 R08: 0000000000000000 R09: 000000000000000a
> > [    1.650863] R10: 00000000000001b6 R11: 0000000000000246 R12: 00007ff996f60010
> > [    1.650946] R13: 000000000008aa47 R14: 00007ff996f60010 R15: 0000000000000000
> > [    1.651058] Code: 39 5a 68 77 ce 48 89 ef 5b 5d e9 03 c7 ef ff 0f
> > 1f 00 48 85 ff 74 04 3e ff 47 48 f3 c3 0f 1f 44 00 00 48 85 ff 74 5b
> > 41 54 55 53 <8b> 47 48 48 8b 2f 85 c0 0f 84 89 00 00 00 49 89 fc 48 8d
> > 75 6c
> > [    1.651492] RIP: hfsplus_bnode_put+0x9/0xc0 RSP: ffffb750409b7a58
> > [    1.651583] CR2: 0000000000000043
> > [    1.651851] ---[ end trace d164982d45c0eb53 ]---
> >
> > (full log attached)
> >
> > And when I mount hfsplus_16mb_hang and perform `echo > /mnt/xyz`, it hangs.
> >
> > PS: Please excuse me, if these patches just became slightly outdated
> > and I didn't managed to apply them properly.
> > пт, 8 июн. 2018 г. в 18:25, Pavel Machek <pavel@xxxxxx>:
> > >
> > > On Sun 2018-06-03 15:49:56, Ernesto A. Fernández wrote:
> > > 1;2802;0c> Hi, thank you for your report.
> > > >
> > > > On Sun, Jun 03, 2018 at 06:52:19PM +0300, Anatoly Trosinenko wrote:
> > > > > How to reproduce:
> > > > > 1. Take kernel source v4.17-rc7
> > > > > 2. Compile it with the config attached
> > > > > 3. Unpack and mount the attached FS image as hfsplus.
> > > >
> > > > We are aware of this issue and I've sent some patches [1][2]. It's hard
> > > > to get reviewers interested in hfsplus, so I don't know when it will be
> > > > fixed.
> > >
> > > I guess Anatoly can still test the patches, and add Tested-by tags if
> > > they help. No guarantees, but that may make it easier to get the patches
> > > merged.
> > >
> > > Thanks,
> > >                                                                 Pavel
> > >
> > > > [1] https://www.spinics.net/lists/linux-fsdevel/msg125241.html
> > > > [2] https://www.spinics.net/lists/linux-fsdevel/msg126499.html
> > >
> > > --
> > > (english) http://www.livejournal.com/~pavelmachek
> > > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
> >
> >
> >
> > --




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux