summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUsama Arif <usama.arif@linux.dev>2026-06-16 07:15:17 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-07-04 13:44:17 +0200
commit99e6c712cc300883b8cbf03347d5359ec1a4d6dd (patch)
tree7433e1f5fc4625f07fadf868e0f03467f1665651
parent0d35f9f194a858567a21017d69318a51e3a822b9 (diff)
downloadlinux-99e6c712cc300883b8cbf03347d5359ec1a4d6dd.tar.gz
linux-99e6c712cc300883b8cbf03347d5359ec1a4d6dd.zip
kernel/fork: clear PF_BLOCK_TS in copy_process()
commit fd38b75c4b43295b10d69772a46d1c74dbd6fc81 upstream. PF_BLOCK_TS is only set in blk_time_get_ns() when current->plug is non-NULL, and blk_finish_plug() clears it via __blk_flush_plug() before NULLing the plug pointer. copy_process() breaks the invariant by inheriting PF_BLOCK_TS from the parent while resetting the child's plug to NULL. Clear PF_BLOCK_TS alongside that assignment so callers can rely on "PF_BLOCK_TS set implies current->plug != NULL" and dereference current->plug unguarded. Fixes: 06b23f92af87 ("block: update cached timestamp post schedule/preemption") Cc: stable@vger.kernel.org Signed-off-by: Usama Arif <usama.arif@linux.dev> Link: https://patch.msgid.link/20260616141604.328820-2-usama.arif@linux.dev Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--kernel/fork.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 1215d3f52c6d..8b1238d69291 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -2230,6 +2230,7 @@ __latent_entropy struct task_struct *copy_process(
#ifdef CONFIG_BLOCK
p->plug = NULL;
+ p->flags &= ~PF_BLOCK_TS;
#endif
futex_init_task(p);