Commit 81dd10fa authored by Jens Axboe's avatar Jens Axboe Committed by Yu Kuai
Browse files

block: limit block time caching to in_task() context

mainline inclusion
from mainline-v6.9-rc1
commit b874d4aae58b92144ec2c8fa5dc0a27c98388fcc
category: feature
bugzilla: https://gitee.com/openeuler/release-management/issues/IB4E8P
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b874d4aae58b92144ec2c8fa5dc0a27c98388fcc

--------------------------------

We should not have any callers of this from non-task context, but Jakub
ran [1] into one from blk-iocost. Rather than risk running into others,
or future ones, just limit blk_time_get_ns() to when it is called from
a task. Any other usage is invalid.

[1] https://lore.kernel.org/lkml/CAHk-=wiOaBLqarS2uFhM1YdwOvCX4CZaWkeyNDY1zONpbYw2ig@mail.gmail.com/



Fixes: da4c8c3d0975 ("block: cache current nsec time in struct blk_plug")
Reported-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
parent 778fd0ee
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -525,7 +525,7 @@ static inline u64 blk_time_get_ns(void)
{
	struct blk_plug *plug = current->plug;

	if (!plug)
	if (!plug || !in_task())
		return ktime_get_ns();

	/*