From: Wander Lairson Costa <wander@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
linux-rt-users@vger.kernel.org,
Wander Lairson Costa <wander@redhat.com>
Subject: [PATCH v2 1/2] block: Avoid sleeping function called from invalid context bug
Date: Mon, 13 Dec 2021 09:37:36 -0300 [thread overview]
Message-ID: <20211213123737.9147-2-wander@redhat.com> (raw)
In-Reply-To: <20211213123737.9147-1-wander@redhat.com>
This was caught during QA test:
BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:942
in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 243401, name: sed
INFO: lockdep is turned off.
Preemption disabled at:
[<ffffffff89b26268>] blk_cgroup_bio_start+0x28/0xd0
CPU: 2 PID: 243401 Comm: sed Kdump: loaded Not tainted 4.18.0-353.rt7.138.el8.x86_64+debug #1
Hardware name: HP ProLiant DL380 Gen9, BIOS P89 05/06/2015
Call Trace:
dump_stack+0x5c/0x80
___might_sleep.cold.89+0xf5/0x109
rt_spin_lock+0x3e/0xd0
? __blk_add_trace+0x428/0x4b0
__blk_add_trace+0x428/0x4b0
blk_add_trace_bio+0x16e/0x1c0
generic_make_request_checks+0x7e8/0x8c0
generic_make_request+0x3c/0x420
? membarrier_private_expedited+0xd0/0x2b0
? lock_release+0x1ca/0x450
? submit_bio+0x3c/0x160
? _raw_spin_unlock_irqrestore+0x3c/0x80
submit_bio+0x3c/0x160
? rt_mutex_futex_unlock+0x66/0xa0
iomap_submit_ioend.isra.36+0x4a/0x70
xfs_vm_writepages+0x65/0x90 [xfs]
do_writepages+0x41/0xe0
? rt_mutex_futex_unlock+0x66/0xa0
__filemap_fdatawrite_range+0xce/0x110
xfs_release+0x11c/0x160 [xfs]
__fput+0xd5/0x270
task_work_run+0xa1/0xd0
exit_to_usermode_loop+0x14d/0x160
do_syscall_64+0x23b/0x240
entry_SYSCALL_64_after_hwframe+0x6a/0xdf
We replace the get/put_cpu() call by get/put_cpu_light to avoid this bug.
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
---
block/blk-cgroup.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 663aabfeba18..0a532bb3003c 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1911,7 +1911,7 @@ void blk_cgroup_bio_start(struct bio *bio)
struct blkg_iostat_set *bis;
unsigned long flags;
- cpu = get_cpu();
+ cpu = get_cpu_light();
bis = per_cpu_ptr(bio->bi_blkg->iostat_cpu, cpu);
flags = u64_stats_update_begin_irqsave(&bis->sync);
@@ -1928,7 +1928,7 @@ void blk_cgroup_bio_start(struct bio *bio)
u64_stats_update_end_irqrestore(&bis->sync, flags);
if (cgroup_subsys_on_dfl(io_cgrp_subsys))
cgroup_rstat_updated(bio->bi_blkg->blkcg->css.cgroup, cpu);
- put_cpu();
+ put_cpu_light();
}
static int __init blkcg_init(void)
--
2.27.0
next prev parent reply other threads:[~2021-12-13 12:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-13 12:37 [PATCH v2 0/2] Fix warnings in blktrace Wander Lairson Costa
2021-12-13 12:37 ` Wander Lairson Costa [this message]
2021-12-14 7:13 ` [PATCH v2 1/2] block: Avoid sleeping function called from invalid context bug kernel test robot
2021-12-15 16:58 ` Sebastian Andrzej Siewior
2021-12-16 20:21 ` Wander Costa
2021-12-13 12:37 ` [PATCH v2 2/2] blktrace: switch trace spinlock to a raw spinlock Wander Lairson Costa
2021-12-15 17:08 ` Sebastian Andrzej Siewior
2021-12-15 17:31 ` Steven Rostedt
2021-12-15 19:34 ` Jens Axboe
2021-12-16 20:21 ` Wander Costa
2021-12-15 13:29 ` [PATCH v2 0/2] Fix warnings in blktrace Sebastian Andrzej Siewior
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=20211213123737.9147-2-wander@redhat.com \
--to=wander@redhat.com \
--cc=bigeasy@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox