diff options
author | Jens Axboe <axboe@kernel.dk> | 2024-03-12 15:58:41 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2024-03-13 14:12:53 -0600 |
commit | b874d4aae58b92144ec2c8fa5dc0a27c98388fcc (patch) | |
tree | d723bc722655adb7460ff8dc321814f022d7ce9a /block | |
parent | 259f7d5e2baf87fcbb4fabc46526c9c47fed1914 (diff) | |
download | linux-stable-b874d4aae58b92144ec2c8fa5dc0a27c98388fcc.tar.gz linux-stable-b874d4aae58b92144ec2c8fa5dc0a27c98388fcc.tar.bz2 linux-stable-b874d4aae58b92144ec2c8fa5dc0a27c98388fcc.zip |
block: limit block time caching to in_task() context
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: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/blk.h b/block/blk.h index a19b7b42e650..5cac4e29ae17 100644 --- a/block/blk.h +++ b/block/blk.h @@ -534,7 +534,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(); /* |