* [Bug] kernel oops when running xfstests(ext4) generic/081 @ 2018-06-05 8:08 Ming Lei 2018-06-05 8:52 ` Kent Overstreet 2018-06-05 9:30 ` Kent Overstreet 0 siblings, 2 replies; 3+ messages in thread From: Ming Lei @ 2018-06-05 8:08 UTC (permalink / raw) To: Mike Snitzer, dm-devel; +Cc: Kent Overstreet Hi, The following failure is triggered when running xfstests(ext4) generic/081 with the linus tree(4.17.0_716a685fdb89). It might be related with recent mempool change. [ 206.450481] run fstests generic/081 at 2018-06-05 05:48:26 [ 207.017192] device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. [ 207.018870] EXT4-fs warning (device dm-3): ext4_end_bio:323: I/O error 10 writing to inode 12 (offset 2097152 size 2097152 starting block 14336) [ 207.020480] Buffer I/O error on device dm-3, logical block 12289 [ 207.021179] Buffer I/O error on device dm-3, logical block 12290 [ 207.021866] Buffer I/O error on device dm-3, logical block 12291 [ 207.022547] Buffer I/O error on device dm-3, logical block 12292 [ 207.023813] Buffer I/O error on device dm-3, logical block 12293 [ 207.024514] Buffer I/O error on device dm-3, logical block 12294 [ 207.025198] Buffer I/O error on device dm-3, logical block 12295 [ 207.025882] Buffer I/O error on device dm-3, logical block 12296 [ 207.026577] Buffer I/O error on device dm-3, logical block 12297 [ 207.027264] Buffer I/O error on device dm-3, logical block 12298 [ 207.028944] EXT4-fs warning (device dm-3): ext4_end_bio:323: I/O error 10 writing to inode 12 (offset 4194304 size 1048576 starting block 15360) [ 207.032064] Buffer I/O error on dev dm-3, logical block 114689, lost sync page write [ 207.032989] JBD2: Error -5 detected when updating journal superblock for dm-3-8. [ 207.033831] Aborting journal on device dm-3-8. [ 207.034345] Buffer I/O error on dev dm-3, logical block 114689, lost sync page write [ 207.035234] JBD2: Error -5 detected when updating journal superblock for dm-3-8. [ 207.037705] Buffer I/O error on dev dm-3, logical block 1, lost sync page write [ 209.059165] BUG: unable to handle kernel paging request at ffff8805ab10ccf8 [ 209.060034] PGD 2981067 P4D 2981067 PUD 0 [ 209.060506] Oops: 0000 [#1] PREEMPT SMP PTI [ 209.060994] CPU: 0 PID: 16548 Comm: lvm Not tainted 4.17.0_716a685fdb89_master+ #1 [ 209.061848] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-2.fc27 04/01/2014 [ 209.062780] RIP: 0010:remove_element.isra.1+0x17/0x20 [ 209.063359] Code: 1f 44 00 00 e9 8b 59 05 00 0f 1f 44 00 00 e9 57 52 00 00 0f 1f 44 00 00 8b 77 08 48 8b 47 10 8d 56 ff 48 63 ca 85 d2 89 57 08 <48> 8b 04 c8 79 02 0f 0b c3 0f 1f 44 00 00 53 48 89 fb 83 7b 08 00 [ 209.065511] RSP: 0018:ffffc90001313ba0 EFLAGS: 00010206 [ 209.066101] RAX: ffff880269330d00 RBX: ffff8802683bb800 RCX: 00000000683bb7ff [ 209.066856] RDX: 00000000683bb7ff RSI: 00000000683bb800 RDI: ffff8802683bb800 [ 209.067608] RBP: ffffc90001065040 R08: 0000000000000000 R09: ffff88026b683d00 [ 209.068365] R10: ffffc90001313aa0 R11: 0000000000000000 R12: 0000000000000000 [ 209.069125] R13: 0000000000000001 R14: 0000000000000000 R15: ffffffffa0008a01 [ 209.069882] FS: 00007fec993b6900(0000) GS:ffff88027fc00000(0000) knlGS:0000000000000000 [ 209.070735] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 209.071349] CR2: ffff8805ab10ccf8 CR3: 0000000269bc0004 CR4: 0000000000760ef0 [ 209.072110] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 209.072865] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 209.073617] PKRU: 55555554 [ 209.073916] Call Trace: [ 209.074187] mempool_exit+0x17/0x3c [ 209.074570] dm_io_client_destroy+0xe/0x20 [dm_mod] [ 209.075098] dm_kcopyd_client_destroy+0xb0/0x101 [dm_mod] [ 209.075675] ? remove_all+0x29/0x29 [dm_mod] [ 209.076141] ? unregister_snapshot+0x7d/0x8a [dm_snapshot] [ 209.076725] snapshot_dtr+0xfb/0x17d [dm_snapshot] [ 209.077246] dm_table_destroy+0x60/0xfb [dm_mod] [ 209.077754] ? remove_all+0x29/0x29 [dm_mod] [ 209.078217] __dm_destroy+0x13b/0x14b [dm_mod] [ 209.078696] dev_remove+0x160/0x16a [dm_mod] [ 209.079161] ctl_ioctl+0x295/0x374 [dm_mod] [ 209.079614] dm_ctl_ioctl+0xa/0xd [dm_mod] [ 209.080061] vfs_ioctl+0x1e/0x2b [ 209.080411] do_vfs_ioctl+0x523/0x54b [ 209.080812] ? ksys_semctl+0xb9/0x126 [ 209.081210] ? ipcget+0x1f0/0x217 [ 209.081568] ksys_ioctl+0x3e/0x5d [ 209.081934] __x64_sys_ioctl+0x16/0x19 [ 209.082340] do_syscall_64+0x84/0x13f [ 209.082737] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [ 209.083279] RIP: 0033:0x7fec97f3a0f7 [ 209.083664] Code: b3 66 90 48 8b 05 a9 3d 2c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 79 3d 2c 00 f7 d8 64 89 01 48 [ 209.085660] RSP: 002b:00007ffc6d9c2a48 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [ 209.086464] RAX: ffffffffffffffda RBX: 0000559dee712350 RCX: 00007fec97f3a0f7 [ 209.087222] RDX: 0000559defcb8c30 RSI: 00000000c138fd04 RDI: 0000000000000006 [ 209.087978] RBP: 00000000000000fc R08: 0000000000000000 R09: 00007ffc6d9c28b0 [ 209.088732] R10: 00007fec98498683 R11: 0000000000000246 R12: 0000000000000001 [ 209.089490] R13: 0000559defcb8c60 R14: 0000559defcb8c30 R15: 0000559defc99ec0 [ 209.090249] Modules linked in: dm_snapshot dm_bufio xfs libcrc32c dm_flakey isofs iTCO_wdt iTCO_vendor_support i2c_i801 i2c_core lpc_ich mfd_core ip_tables sr_mod cdrom sd_mod usb_storage ahci libahci nvme libata crc32c_intel nvme_core virtio_scsi qemu_fw_cfg dm_mirror dm_region_hash dm_log dm_mod [ 209.093036] Dumping ftrace buffer: [ 209.093404] (ftrace buffer empty) [ 209.093792] CR2: ffff8805ab10ccf8 [ 209.094154] ---[ end trace 49333fa80a7daaa2 ]--- Thanks, Ming ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Bug] kernel oops when running xfstests(ext4) generic/081 2018-06-05 8:08 [Bug] kernel oops when running xfstests(ext4) generic/081 Ming Lei @ 2018-06-05 8:52 ` Kent Overstreet 2018-06-05 9:30 ` Kent Overstreet 1 sibling, 0 replies; 3+ messages in thread From: Kent Overstreet @ 2018-06-05 8:52 UTC (permalink / raw) To: Ming Lei; +Cc: dm-devel, Mike Snitzer On Tue, Jun 05, 2018 at 04:08:37PM +0800, Ming Lei wrote: > Hi, > > The following failure is triggered when running xfstests(ext4) > generic/081 with the linus tree(4.17.0_716a685fdb89). > > It might be related with recent mempool change. Oh _fuck_, I forgot to check that the structs the mempools/biosets were being embedded in were allocated with GFP_ZERO. Fuckity fuck fuck. Fuck. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Bug] kernel oops when running xfstests(ext4) generic/081 2018-06-05 8:08 [Bug] kernel oops when running xfstests(ext4) generic/081 Ming Lei 2018-06-05 8:52 ` Kent Overstreet @ 2018-06-05 9:30 ` Kent Overstreet 1 sibling, 0 replies; 3+ messages in thread From: Kent Overstreet @ 2018-06-05 9:30 UTC (permalink / raw) To: Ming Lei; +Cc: dm-devel, Mike Snitzer On Tue, Jun 05, 2018 at 04:08:37PM +0800, Ming Lei wrote: > Hi, > > The following failure is triggered when running xfstests(ext4) > generic/081 with the linus tree(4.17.0_716a685fdb89). > > It might be related with recent mempool change. Yeah that would be correct. I just tested and confirmed and mailed out the patch below, you want to double check for me? commit 1678b1f8d46c9f8f52372edfde7b9a94e9b416fe Author: Kent Overstreet <kent.overstreet@gmail.com> Date: Tue Jun 5 05:05:51 2018 -0400 dm: Use kzalloc for all structs with embedded biosets/mempools mempool_init()/bioset_init() require that the mempools/biosets be zeroed first; they probably should not _require_ this, but not allocating those structs with kzalloc is a fairly nonsensical thing to do (calling mempool_exit()/bioset_exit() on an uninitialized mempool/bioset is legal and safe, but only works if said memory was zeroed.) Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> diff --git a/drivers/md/dm-bio-prison-v1.c b/drivers/md/dm-bio-prison-v1.c index 8e33a38083..e794e3662f 100644 --- a/drivers/md/dm-bio-prison-v1.c +++ b/drivers/md/dm-bio-prison-v1.c @@ -33,7 +33,7 @@ static struct kmem_cache *_cell_cache; */ struct dm_bio_prison *dm_bio_prison_create(void) { - struct dm_bio_prison *prison = kmalloc(sizeof(*prison), GFP_KERNEL); + struct dm_bio_prison *prison = kzalloc(sizeof(*prison), GFP_KERNEL); int ret; if (!prison) diff --git a/drivers/md/dm-bio-prison-v2.c b/drivers/md/dm-bio-prison-v2.c index 601b156920..f866bc97b0 100644 --- a/drivers/md/dm-bio-prison-v2.c +++ b/drivers/md/dm-bio-prison-v2.c @@ -35,7 +35,7 @@ static struct kmem_cache *_cell_cache; */ struct dm_bio_prison_v2 *dm_bio_prison_create_v2(struct workqueue_struct *wq) { - struct dm_bio_prison_v2 *prison = kmalloc(sizeof(*prison), GFP_KERNEL); + struct dm_bio_prison_v2 *prison = kzalloc(sizeof(*prison), GFP_KERNEL); int ret; if (!prison) diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c index 53c6ed0eaa..81ffc59d05 100644 --- a/drivers/md/dm-io.c +++ b/drivers/md/dm-io.c @@ -51,7 +51,7 @@ struct dm_io_client *dm_io_client_create(void) unsigned min_ios = dm_get_reserved_bio_based_ios(); int ret; - client = kmalloc(sizeof(*client), GFP_KERNEL); + client = kzalloc(sizeof(*client), GFP_KERNEL); if (!client) return ERR_PTR(-ENOMEM); diff --git a/drivers/md/dm-kcopyd.c b/drivers/md/dm-kcopyd.c index c89a675a2a..ce7efc7434 100644 --- a/drivers/md/dm-kcopyd.c +++ b/drivers/md/dm-kcopyd.c @@ -882,7 +882,7 @@ struct dm_kcopyd_client *dm_kcopyd_client_create(struct dm_kcopyd_throttle *thro int r; struct dm_kcopyd_client *kc; - kc = kmalloc(sizeof(*kc), GFP_KERNEL); + kc = kzalloc(sizeof(*kc), GFP_KERNEL); if (!kc) return ERR_PTR(-ENOMEM); diff --git a/drivers/md/dm-region-hash.c b/drivers/md/dm-region-hash.c index 43149eb493..abf3521b80 100644 --- a/drivers/md/dm-region-hash.c +++ b/drivers/md/dm-region-hash.c @@ -180,7 +180,7 @@ struct dm_region_hash *dm_region_hash_create( ; nr_buckets >>= 1; - rh = kmalloc(sizeof(*rh), GFP_KERNEL); + rh = kzalloc(sizeof(*rh), GFP_KERNEL); if (!rh) { DMERR("unable to allocate region hash memory"); return ERR_PTR(-ENOMEM); diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index b11ddc55f2..f745404da7 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c @@ -1120,7 +1120,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) origin_mode = FMODE_WRITE; } - s = kmalloc(sizeof(*s), GFP_KERNEL); + s = kzalloc(sizeof(*s), GFP_KERNEL); if (!s) { ti->error = "Cannot allocate private snapshot structure"; r = -ENOMEM; diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 6c923824ec..5772756c63 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -2861,7 +2861,7 @@ static struct pool *pool_create(struct mapped_device *pool_md, return (struct pool *)pmd; } - pool = kmalloc(sizeof(*pool), GFP_KERNEL); + pool = kzalloc(sizeof(*pool), GFP_KERNEL); if (!pool) { *error = "Error allocating memory for pool"; err_p = ERR_PTR(-ENOMEM); ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-06-05 9:30 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-06-05 8:08 [Bug] kernel oops when running xfstests(ext4) generic/081 Ming Lei 2018-06-05 8:52 ` Kent Overstreet 2018-06-05 9:30 ` Kent Overstreet
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.