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
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>, 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(-)
next prev parent reply other threads:[~2022-04-04 6:48 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-08 6:15 [dm-devel] cleanup bio_kmalloc v2 Christoph Hellwig
2022-03-08 6:15 ` Christoph Hellwig
2022-03-08 6:15 ` [dm-devel] [PATCH 1/5] btrfs: simplify ->flush_bio handling Christoph Hellwig
2022-03-08 6:15 ` Christoph Hellwig
2022-03-08 22:07 ` [dm-devel] " Chaitanya Kulkarni
2022-03-08 22:07 ` Chaitanya Kulkarni
2022-03-08 6:15 ` [dm-devel] [PATCH 2/5] squashfs: always use bio_kmalloc in squashfs_bio_read Christoph Hellwig
2022-03-08 6:15 ` Christoph Hellwig
2022-03-08 6:15 ` [dm-devel] [PATCH 3/5] target/pscsi: remove pscsi_get_bio Christoph Hellwig
2022-03-08 6:15 ` Christoph Hellwig
2022-03-08 22:08 ` [dm-devel] " Chaitanya Kulkarni
2022-03-08 22:08 ` Chaitanya Kulkarni
2022-03-08 6:15 ` [dm-devel] [PATCH 4/5] block: turn bio_kmalloc into a simple kmalloc wrapper Christoph Hellwig
2022-03-08 6:15 ` Christoph Hellwig
2022-03-09 3:06 ` [dm-devel] " Martin K. Petersen
2022-03-09 3:06 ` Martin K. Petersen
2022-03-31 21:18 ` [dm-devel] " Marek Szyprowski
2022-03-31 21:18 ` Marek Szyprowski
2022-03-31 21:22 ` [dm-devel] " Jens Axboe
2022-03-31 21:22 ` Jens Axboe
2022-04-01 4:57 ` [dm-devel] " Christoph Hellwig
2022-04-01 4:57 ` Christoph Hellwig
2022-03-08 6:15 ` [dm-devel] [PATCH 5/5] pktcdvd: stop using bio_reset Christoph Hellwig
2022-03-08 6:15 ` Christoph Hellwig
2022-03-08 22:10 ` [dm-devel] " Chaitanya Kulkarni
2022-03-08 22:10 ` Chaitanya Kulkarni
2022-03-30 14:29 ` [dm-devel] cleanup bio_kmalloc v2 Christoph Hellwig
2022-03-30 14:29 ` Christoph Hellwig
2022-03-30 14:37 ` [dm-devel] " Jens Axboe
2022-03-30 14:37 ` Jens Axboe
2022-03-30 14:49 ` [dm-devel] " Jens Axboe
2022-03-30 14:49 ` Jens Axboe
2022-03-31 16:34 ` Qian Cai [this message]
2022-03-31 16:34 ` Qian Cai
2022-03-31 16:40 ` [dm-devel] " Christoph Hellwig
2022-03-31 16:40 ` Christoph Hellwig
2022-03-31 16:48 ` [dm-devel] " Jens Axboe
2022-03-31 16:48 ` 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: link
Be 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.