From: Qian Cai <quic_qiancai@quicinc.com> To: Christoph Hellwig <hch@lst.de> Cc: Jens Axboe <axboe@kernel.dk>, Coly Li <colyli@suse.de>, Mike Snitzer <snitzer@redhat.com>, Song Liu <song@kernel.org>, "Martin K. Petersen" <martin.petersen@oracle.com>, Josef Bacik <josef@toxicpanda.com>, "David Sterba" <dsterba@suse.com>, Phillip Lougher <phillip@squashfs.org.uk>, <linux-block@vger.kernel.org>, <dm-devel@redhat.com>, <linux-kernel@vger.kernel.org>, <linux-bcache@vger.kernel.org>, <linux-raid@vger.kernel.org>, <target-devel@vger.kernel.org>, <linux-btrfs@vger.kernel.org> Subject: Re: cleanup bio_kmalloc v2 Date: Thu, 31 Mar 2022 12:34:56 -0400 [thread overview] Message-ID: <YkXYMGGbk/ZTbGaA@qian> (raw) In-Reply-To: <20220308061551.737853-1-hch@lst.de> On Tue, Mar 08, 2022 at 07:15:46AM +0100, Christoph Hellwig wrote: > Hi Jens, > > this series finishes off the bio allocation interface cleanups by dealing > with the weirdest member of the famility. bio_kmalloc combines a kmalloc > for the bio and bio_vecs with a hidden bio_init call and magic cleanup > semantics. > > This series moves a few callers away from bio_kmalloc and then turns > bio_kmalloc into a simple wrapper for a slab allocation of a bio and the > inline biovecs. The callers need to manually call bio_init instead with > all that entails and the magic that turns bio_put into a kfree goes away > as well, allowing for a proper debug check in bio_put that catches > accidental use on a bio_init()ed bio. Reverting this series fixed boot crashes. WARNING: CPU: 1 PID: 2622 at block/bio.c:229 bio_free Modules linked in: cdc_ether usbnet ipmi_devintf ipmi_msghandler cppc_cpufreq fuse ip_tables x_tables ipv6 btrfs blake2b_generic libcrc32c xor xor_neon raid6_pq zstd_compress dm_mod nouveau crct10dif_ce drm_ttm_helper mlx5_core ttm drm_dp_helper drm_kms_helper nvme mpt3sas xhci_pci nvme_core raid_class drm xhci_pci_renesas CPU: 1 PID: 2622 Comm: mount Not tainted 5.17.0-next-20220331 #50 pstate: 10400009 (nzcV daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : bio_free lr : bio_put sp : ffff8000371b7760 x29: ffff8000371b7760 x28: 0000000000000000 x27: dfff800000000000 x26: ffff08028f93a600 x25: 0000000000000000 x24: ffff08028f92f600 x23: 1ffff00006e36f10 x22: ffff08028fa18510 x21: 1fffe10051f430a2 x20: 0000000000000000 x19: ffff08028fa18500 x18: ffffde03db3e7d2c x17: ffffde03d55f8bc4 x16: 1fffe10051e75129 x15: 1fffe106cfcfbb46 x14: 1fffe10051e7511c x13: 0000000000000004 x12: ffff700006e36eab x11: 1ffff00006e36eaa x10: ffff700006e36eaa x9 : ffffde03d5cb9fec x8 : ffff8000371b7557 x7 : 0000000000000001 x6 : ffff700006e36eaa x5 : 1ffff00006e36ea9 x4 : 1ffff00006e36ebe x3 : 1fffe10051f430a2 x2 : 1fffe10051f430ae x1 : 0000000000000000 x0 : ffff08028fa18570 Call trace: bio_free bio_put squashfs_read_data squashfs_read_table squashfs_fill_super get_tree_bdev squashfs_get_tree vfs_get_tree do_new_mount path_mount __arm64_sys_mount invoke_syscall el0_svc_common.constprop.0 do_el0_svc el0_svc el0t_64_sync_handler el0t_64_sync irq event stamp: 33146 hardirqs last enabled at (33145): free_unref_page hardirqs last disabled at (33146): el1_dbg softirqs last enabled at (33122): __do_softirq softirqs last disabled at (33111): __irq_exit_rcu ---[ end trace 0000000000000000 ]--- Unable to handle kernel paging request at virtual address dfff800000000001 KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] Mem abort info: ESR = 0x96000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x00000004 CM = 0, WnR = 0 [dfff800000000001] address between user and kernel address ranges Internal error: Oops: 96000004 [#1] PREEMPT SMP Modules linked in: cdc_ether usbnet ipmi_devintf ipmi_msghandler cppc_cpufreq fuse ip_tables x_tables ipv6 btrfs blake2b_generic libcrc32c xor xor_neon raid6_pq zstd_compress dm_mod nouveau crct10dif_ce drm_ttm_helper mlx5_core ttm drm_dp_helper drm_kms_helper nvme mpt3sas xhci_pci nvme_core raid_class drm xhci_pci_renesas CPU: 1 PID: 2622 Comm: mount Tainted: G W 5.17.0-next-20220331 #50 pc : bio_free lr : bio_free sp : ffff8000371b7760 x29: ffff8000371b7760 x28: 0000000000000000 x27: dfff800000000000 x26: ffff08028f93a600 x25: 0000000000000000 x24: ffff08028f92f600 x23: 1ffff00006e36f10 x22: ffff08028fa18548 x21: 00000000000000d0 x20: 0000000000000000 x19: ffff08028fa18500 x18: ffffde03db3e7d2c x17: ffffde03d55f8bc4 x16: 1fffe10051e75129 x15: 1fffe106cfcfbb46 x14: 1fffe10051e7511c x13: 0000000000000004 x12: ffff700006e36eab x11: 1ffff00006e36eaa x10: ffff700006e36eaa x9 : ffffde03d5cb9c78 x8 : ffff8000371b7557 x7 : 0000000000000001 x6 : ffff700006e36eaa x5 : 1ffff00006e36ea9 x4 : 1fffe10051f430ac x3 : 0000000000000001 x2 : 0000000000000003 x1 : dfff800000000000 x0 : 0000000000000008 Call trace: bio_free bio_put squashfs_read_data squashfs_read_table squashfs_fill_super get_tree_bdev squashfs_get_tree vfs_get_tree do_new_mount path_mount __arm64_sys_mount invoke_syscall el0_svc_common.constprop.0 do_el0_svc el0_svc el0t_64_sync_handler el0t_64_sync Code: d2d00001 f2fbffe1 52800062 d343fc03 (38e16861) ---[ end trace 0000000000000000 ]--- SMP: stopping secondary CPUs Kernel Offset: 0x5e03ccd70000 from 0xffff800008000000 PHYS_OFFSET: 0x80000000 CPU features: 0x000,00085c0d,19801c82 Memory Limit: none ---[ end Kernel panic - not syncing: Oops: Fatal exception ]--- > > Changes since v1: > - update a pre-existing comment per maintainer suggestion > > Diffstat: > block/bio.c | 47 ++++++++++++++----------------------- > block/blk-crypto-fallback.c | 14 ++++++----- > block/blk-map.c | 42 +++++++++++++++++++++------------ > drivers/block/pktcdvd.c | 34 +++++++++++--------------- > drivers/md/bcache/debug.c | 10 ++++--- > drivers/md/dm-bufio.c | 9 +++---- > drivers/md/raid1.c | 12 ++++++--- > drivers/md/raid10.c | 21 +++++++++++----- > drivers/target/target_core_pscsi.c | 36 ++++------------------------ > fs/btrfs/disk-io.c | 8 +++--- > fs/btrfs/volumes.c | 11 -------- > fs/btrfs/volumes.h | 2 - > fs/squashfs/block.c | 14 +++-------- > include/linux/bio.h | 2 - > 14 files changed, 116 insertions(+), 146 deletions(-)
WARNING: multiple messages have this Message-ID (diff)
From: Qian Cai <quic_qiancai@quicinc.com> To: Christoph Hellwig <hch@lst.de> Cc: Jens Axboe <axboe@kernel.dk>, linux-raid@vger.kernel.org, Mike Snitzer <snitzer@redhat.com>, "Martin K. Petersen" <martin.petersen@oracle.com>, linux-kernel@vger.kernel.org, Josef Bacik <josef@toxicpanda.com>, Coly Li <colyli@suse.de>, linux-block@vger.kernel.org, Song Liu <song@kernel.org>, dm-devel@redhat.com, target-devel@vger.kernel.org, David Sterba <dsterba@suse.com>, Phillip Lougher <phillip@squashfs.org.uk>, linux-bcache@vger.kernel.org, linux-btrfs@vger.kernel.org Subject: Re: [dm-devel] cleanup bio_kmalloc v2 Date: Thu, 31 Mar 2022 12:34:56 -0400 [thread overview] Message-ID: <YkXYMGGbk/ZTbGaA@qian> (raw) In-Reply-To: <20220308061551.737853-1-hch@lst.de> On Tue, Mar 08, 2022 at 07:15:46AM +0100, Christoph Hellwig wrote: > Hi Jens, > > this series finishes off the bio allocation interface cleanups by dealing > with the weirdest member of the famility. bio_kmalloc combines a kmalloc > for the bio and bio_vecs with a hidden bio_init call and magic cleanup > semantics. > > This series moves a few callers away from bio_kmalloc and then turns > bio_kmalloc into a simple wrapper for a slab allocation of a bio and the > inline biovecs. The callers need to manually call bio_init instead with > all that entails and the magic that turns bio_put into a kfree goes away > as well, allowing for a proper debug check in bio_put that catches > accidental use on a bio_init()ed bio. Reverting this series fixed boot crashes. WARNING: CPU: 1 PID: 2622 at block/bio.c:229 bio_free Modules linked in: cdc_ether usbnet ipmi_devintf ipmi_msghandler cppc_cpufreq fuse ip_tables x_tables ipv6 btrfs blake2b_generic libcrc32c xor xor_neon raid6_pq zstd_compress dm_mod nouveau crct10dif_ce drm_ttm_helper mlx5_core ttm drm_dp_helper drm_kms_helper nvme mpt3sas xhci_pci nvme_core raid_class drm xhci_pci_renesas CPU: 1 PID: 2622 Comm: mount Not tainted 5.17.0-next-20220331 #50 pstate: 10400009 (nzcV daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : bio_free lr : bio_put sp : ffff8000371b7760 x29: ffff8000371b7760 x28: 0000000000000000 x27: dfff800000000000 x26: ffff08028f93a600 x25: 0000000000000000 x24: ffff08028f92f600 x23: 1ffff00006e36f10 x22: ffff08028fa18510 x21: 1fffe10051f430a2 x20: 0000000000000000 x19: ffff08028fa18500 x18: ffffde03db3e7d2c x17: ffffde03d55f8bc4 x16: 1fffe10051e75129 x15: 1fffe106cfcfbb46 x14: 1fffe10051e7511c x13: 0000000000000004 x12: ffff700006e36eab x11: 1ffff00006e36eaa x10: ffff700006e36eaa x9 : ffffde03d5cb9fec x8 : ffff8000371b7557 x7 : 0000000000000001 x6 : ffff700006e36eaa x5 : 1ffff00006e36ea9 x4 : 1ffff00006e36ebe x3 : 1fffe10051f430a2 x2 : 1fffe10051f430ae x1 : 0000000000000000 x0 : ffff08028fa18570 Call trace: bio_free bio_put squashfs_read_data squashfs_read_table squashfs_fill_super get_tree_bdev squashfs_get_tree vfs_get_tree do_new_mount path_mount __arm64_sys_mount invoke_syscall el0_svc_common.constprop.0 do_el0_svc el0_svc el0t_64_sync_handler el0t_64_sync irq event stamp: 33146 hardirqs last enabled at (33145): free_unref_page hardirqs last disabled at (33146): el1_dbg softirqs last enabled at (33122): __do_softirq softirqs last disabled at (33111): __irq_exit_rcu ---[ end trace 0000000000000000 ]--- Unable to handle kernel paging request at virtual address dfff800000000001 KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] Mem abort info: ESR = 0x96000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x00000004 CM = 0, WnR = 0 [dfff800000000001] address between user and kernel address ranges Internal error: Oops: 96000004 [#1] PREEMPT SMP Modules linked in: cdc_ether usbnet ipmi_devintf ipmi_msghandler cppc_cpufreq fuse ip_tables x_tables ipv6 btrfs blake2b_generic libcrc32c xor xor_neon raid6_pq zstd_compress dm_mod nouveau crct10dif_ce drm_ttm_helper mlx5_core ttm drm_dp_helper drm_kms_helper nvme mpt3sas xhci_pci nvme_core raid_class drm xhci_pci_renesas CPU: 1 PID: 2622 Comm: mount Tainted: G W 5.17.0-next-20220331 #50 pc : bio_free lr : bio_free sp : ffff8000371b7760 x29: ffff8000371b7760 x28: 0000000000000000 x27: dfff800000000000 x26: ffff08028f93a600 x25: 0000000000000000 x24: ffff08028f92f600 x23: 1ffff00006e36f10 x22: ffff08028fa18548 x21: 00000000000000d0 x20: 0000000000000000 x19: ffff08028fa18500 x18: ffffde03db3e7d2c x17: ffffde03d55f8bc4 x16: 1fffe10051e75129 x15: 1fffe106cfcfbb46 x14: 1fffe10051e7511c x13: 0000000000000004 x12: ffff700006e36eab x11: 1ffff00006e36eaa x10: ffff700006e36eaa x9 : ffffde03d5cb9c78 x8 : ffff8000371b7557 x7 : 0000000000000001 x6 : ffff700006e36eaa x5 : 1ffff00006e36ea9 x4 : 1fffe10051f430ac x3 : 0000000000000001 x2 : 0000000000000003 x1 : dfff800000000000 x0 : 0000000000000008 Call trace: bio_free bio_put squashfs_read_data squashfs_read_table squashfs_fill_super get_tree_bdev squashfs_get_tree vfs_get_tree do_new_mount path_mount __arm64_sys_mount invoke_syscall el0_svc_common.constprop.0 do_el0_svc el0_svc el0t_64_sync_handler el0t_64_sync Code: d2d00001 f2fbffe1 52800062 d343fc03 (38e16861) ---[ end trace 0000000000000000 ]--- SMP: stopping secondary CPUs Kernel Offset: 0x5e03ccd70000 from 0xffff800008000000 PHYS_OFFSET: 0x80000000 CPU features: 0x000,00085c0d,19801c82 Memory Limit: none ---[ end Kernel panic - not syncing: Oops: Fatal exception ]--- > > Changes since v1: > - update a pre-existing comment per maintainer suggestion > > Diffstat: > block/bio.c | 47 ++++++++++++++----------------------- > block/blk-crypto-fallback.c | 14 ++++++----- > block/blk-map.c | 42 +++++++++++++++++++++------------ > drivers/block/pktcdvd.c | 34 +++++++++++--------------- > drivers/md/bcache/debug.c | 10 ++++--- > drivers/md/dm-bufio.c | 9 +++---- > drivers/md/raid1.c | 12 ++++++--- > drivers/md/raid10.c | 21 +++++++++++----- > drivers/target/target_core_pscsi.c | 36 ++++------------------------ > fs/btrfs/disk-io.c | 8 +++--- > fs/btrfs/volumes.c | 11 -------- > fs/btrfs/volumes.h | 2 - > fs/squashfs/block.c | 14 +++-------- > include/linux/bio.h | 2 - > 14 files changed, 116 insertions(+), 146 deletions(-) -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2022-03-31 16:35 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-08 6:15 cleanup bio_kmalloc v2 Christoph Hellwig 2022-03-08 6:15 ` [dm-devel] " Christoph Hellwig 2022-03-08 6:15 ` [PATCH 1/5] btrfs: simplify ->flush_bio handling Christoph Hellwig 2022-03-08 6:15 ` [dm-devel] " Christoph Hellwig 2022-03-08 22:07 ` Chaitanya Kulkarni 2022-03-08 22:07 ` [dm-devel] " Chaitanya Kulkarni 2022-03-08 6:15 ` [PATCH 2/5] squashfs: always use bio_kmalloc in squashfs_bio_read Christoph Hellwig 2022-03-08 6:15 ` [dm-devel] " Christoph Hellwig 2022-03-08 6:15 ` [PATCH 3/5] target/pscsi: remove pscsi_get_bio Christoph Hellwig 2022-03-08 6:15 ` [dm-devel] " Christoph Hellwig 2022-03-08 22:08 ` Chaitanya Kulkarni 2022-03-08 22:08 ` [dm-devel] " Chaitanya Kulkarni 2022-03-08 6:15 ` [PATCH 4/5] block: turn bio_kmalloc into a simple kmalloc wrapper Christoph Hellwig 2022-03-08 6:15 ` [dm-devel] " Christoph Hellwig 2022-03-09 3:06 ` Martin K. Petersen 2022-03-09 3:06 ` [dm-devel] " Martin K. Petersen [not found] ` <CGME20220331211804eucas1p28da21f2dfd57aa490abffb8f87417f42@eucas1p2.samsung.com> 2022-03-31 21:18 ` Marek Szyprowski 2022-03-31 21:18 ` [dm-devel] " Marek Szyprowski 2022-03-31 21:22 ` Jens Axboe 2022-03-31 21:22 ` [dm-devel] " Jens Axboe 2022-04-01 4:57 ` Christoph Hellwig 2022-04-01 4:57 ` Christoph Hellwig 2022-03-08 6:15 ` [PATCH 5/5] pktcdvd: stop using bio_reset Christoph Hellwig 2022-03-08 6:15 ` [dm-devel] " Christoph Hellwig 2022-03-08 22:10 ` Chaitanya Kulkarni 2022-03-08 22:10 ` [dm-devel] " Chaitanya Kulkarni 2022-03-30 14:29 ` cleanup bio_kmalloc v2 Christoph Hellwig 2022-03-30 14:29 ` [dm-devel] " Christoph Hellwig 2022-03-30 14:37 ` Jens Axboe 2022-03-30 14:37 ` [dm-devel] " Jens Axboe 2022-03-30 14:49 ` Jens Axboe 2022-03-30 14:49 ` [dm-devel] " Jens Axboe 2022-03-31 16:34 ` Qian Cai [this message] 2022-03-31 16:34 ` Qian Cai 2022-03-31 16:40 ` Christoph Hellwig 2022-03-31 16:40 ` [dm-devel] " Christoph Hellwig 2022-03-31 16:48 ` Jens Axboe 2022-03-31 16:48 ` [dm-devel] " Jens Axboe
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=YkXYMGGbk/ZTbGaA@qian \ --to=quic_qiancai@quicinc.com \ --cc=axboe@kernel.dk \ --cc=colyli@suse.de \ --cc=dm-devel@redhat.com \ --cc=dsterba@suse.com \ --cc=hch@lst.de \ --cc=josef@toxicpanda.com \ --cc=linux-bcache@vger.kernel.org \ --cc=linux-block@vger.kernel.org \ --cc=linux-btrfs@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-raid@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=phillip@squashfs.org.uk \ --cc=snitzer@redhat.com \ --cc=song@kernel.org \ --cc=target-devel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.