Please cherry pick: fs/super.c: fix race between freeze_super() and thaw_super()

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

 



Hi, please cherry pick upstream commit:

   9f39af12938: fs/super.c: fix race between freeze_super() and thaw_super()

into the ext4 3.18 and 4.1 kernel trees.

Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1383739

It is needed to prevent the following BUG triggered by generic/390:

[   12.787586] BUG: Dentry f12ffb28{i=2,n=/}  still in use (3) [unmount of ext4 vdc]
[   12.789908] ------------[ cut here ]------------
[   12.790846] WARNING: CPU: 0 PID: 2177 at /usr/projects/linux/ext4-3.18/fs/dcache.c:1405 umount_check+0x85/0x90()
[   12.793467] CPU: 0 PID: 2177 Comm: umount Not tainted 3.18.73-xfstests-00001-gdbc77025fb72 #1
[   12.796046] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
[   12.796777]  00000286 00000286 f0b09e44 c15f2390 00000000 c175a2fc f0b09e74 c10447b9
[   12.796777]  c1744b60 00000000 00000881 c175a2fc 0000057d c1146735 c1146735 c177e209
[   12.796777]  f1795b30 c161e6a0 f0b09e84 c10448a2 00000009 00000000 f0b09eb0 c1146735
[   12.796777] Call Trace:
[   12.796777]  [<c15f2390>] dump_stack+0x7d/0xb1
[   12.796777]  [<c10447b9>] warn_slowpath_common+0x79/0x90
[   12.796777]  [<c1146735>] ? umount_check+0x85/0x90
[   12.796777]  [<c1146735>] ? umount_check+0x85/0x90
[   12.796777]  [<c10448a2>] warn_slowpath_null+0x22/0x30
[   12.796777]  [<c1146735>] umount_check+0x85/0x90
[   12.796777]  [<c1145e8a>] d_walk+0xaa/0x3b0
[   12.796777]  [<c1147eb8>] ? do_one_tree+0x28/0x40
[   12.796777]  [<c1147e7b>] ? shrink_dcache_parent+0x5b/0x70
[   12.796777]  [<c11466b0>] ? dentry_free+0x90/0x90
[   12.796777]  [<c1147eb8>] do_one_tree+0x28/0x40
[   12.796777]  [<c1147efa>] shrink_dcache_for_umount+0x2a/0x80
[   12.796777]  [<c10fdfff>] ? unregister_shrinker+0x2f/0x40
[   12.796777]  [<c1133797>] generic_shutdown_super+0x27/0xe0
[   12.796777]  [<c10fdfff>] ? unregister_shrinker+0x2f/0x40
[   12.796777]  [<c11347e2>] kill_block_super+0x22/0x70
[   12.796777]  [<c1133518>] deactivate_locked_super+0x38/0x50
[   12.796777]  [<c1133577>] deactivate_super+0x47/0x70
[   12.796777]  [<c114f239>] cleanup_mnt+0x39/0x90
[   12.796777]  [<c114f2d0>] __cleanup_mnt+0x10/0x20
[   12.796777]  [<c105c3f9>] task_work_run+0x99/0xd0
[   12.796777]  [<c1002405>] do_notify_resume+0x65/0x70
[   12.796777]  [<c15f9b8a>] work_notifysig+0x35/0x3b
[   12.838796] ---[ end trace cfb73eafe98cbf6a ]---
[   12.859723] VFS: Busy inodes after unmount of vdc. Self-destruct in 5 seconds.  Have a nice day...
[   12.871645] BUG: unable to handle kernel NULL pointer dereference at 00000204
[   12.874723] IP: [<c11b5508>] ext4_evict_inode+0x48/0x580
[   12.874723] *pde = 00000000 
[   12.874723] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
[   12.874723] CPU: 1 PID: 2177 Comm: umount Tainted: G        W      3.18.73-xfstests-00001-gdbc77025fb72 #1
[   12.874723] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
[   12.874723] task: f1507330 ti: f0b08000 task.ti: f0b08000
[   12.874723] EIP: 0060:[<c11b5508>] EFLAGS: 00010297 CPU: 1
[   12.874723] EIP is at ext4_evict_inode+0x48/0x580
[   12.874723] EAX: f1795800 EBX: f1cc8c30 ECX: 00000000 EDX: c11b54c0
[   12.874723] ESI: f1cc8d4c EDI: c186ae68 EBP: f0b09ef4 ESP: f0b09ed0
[   12.874723]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[   12.874723] CR0: 8005003b CR2: 00000204 CR3: 316cd000 CR4: 000006d0
[   12.874723] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[   12.874723] DR6: fffe0ff0 DR7: 00000400
[   12.874723] Stack:
[   12.874723]  f1cc8c30 c161e6a0 f0b09ee4 c15f8df2 f1cc8c80 f0b09ef4 f1cc8c30 f1cc8d4c
[   12.874723]  c161e6a0 f0b09f08 c114ad02 f1cc8c30 f1cc8c80 f1795800 f0b09f20 c114b945
[   12.874723]  f12ffb88 f12ffb28 f1cc8c30 f12ffb88 f0b09f40 c1146c71 c15f8d3d 00000000
[   12.874723] Call Trace:
[   12.874723]  [<c15f8df2>] ? _raw_spin_unlock+0x22/0x30
[   12.874723]  [<c114ad02>] evict+0x92/0x160
[   12.874723]  [<c114b945>] iput+0xa5/0x180
[   12.874723]  [<c1146c71>] __dentry_kill+0x191/0x1d0
[   12.874723]  [<c15f8d3d>] ? _raw_spin_trylock+0x5d/0x70
[   12.874723]  [<c1146cc5>] ? dput.part.9+0x15/0x2d0
[   12.874723]  [<c1146f37>] dput.part.9+0x287/0x2d0
[   12.874723]  [<c1146cc5>] ? dput.part.9+0x15/0x2d0
[   12.874723]  [<c11478c1>] dput+0x11/0x20
[   12.874723]  [<c114f231>] cleanup_mnt+0x31/0x90
[   12.874723]  [<c114f2d0>] __cleanup_mnt+0x10/0x20
[   12.874723]  [<c105c3f9>] task_work_run+0x99/0xd0
[   12.874723]  [<c1002405>] do_notify_resume+0x65/0x70
[   12.874723]  [<c15f9b8a>] work_notifysig+0x35/0x3b
[   12.874723] Code: 10 e0 93 c1 0f a3 07 19 c0 85 c0 0f 85 ca 00 00 00 8b 43 28 85 c0 0f 84 dd 00 00 00 83 7b 24 08 74 38 8b 43 1c 8b 88 60 03 00 00 <8b> 81 04 02 00 00 85 c0 74 25 0f b7 13 89 d6 66 81 e6 00 f0 66
[   12.874723] EIP: [<c11b5508>] ext4_evict_inode+0x48/0x580 SS:ESP 0068:f0b09ed0
[   12.874723] CR2: 0000000000000204
[   12.971319] ---[ end trace cfb73eafe98cbf6b ]---




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]