Re: FAILED: patch "[PATCH] io_uring: don't touch sqd->thread off tw add" failed to apply to 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 12, 2025 at 10:36:56AM +0100, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> 
> The patch below does not apply to the 6.12-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.
> 
> To reproduce the conflict and resubmit, you may use the following commands:
> 
> git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
> git checkout FETCH_HEAD
> git cherry-pick -x bd2703b42decebdcddf76e277ba76b4c4a142d73
> # <resolve conflicts, build, test, etc.>
> git commit -s
> git send-email --to '<stable@xxxxxxxxxxxxxxx>' --in-reply-to '2025011256-extinct-expanse-d059@gregkh' --subject-prefix 'PATCH 6.12.y' HEAD^..
> 
> Possible dependencies:
> 
> 
> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> >From bd2703b42decebdcddf76e277ba76b4c4a142d73 Mon Sep 17 00:00:00 2001
> From: Pavel Begunkov <asml.silence@xxxxxxxxx>
> Date: Fri, 10 Jan 2025 20:36:45 +0000
> Subject: [PATCH] io_uring: don't touch sqd->thread off tw add
> 
> With IORING_SETUP_SQPOLL all requests are created by the SQPOLL task,
> which means that req->task should always match sqd->thread. Since
> accesses to sqd->thread should be separately protected, use req->task
> in io_req_normal_work_add() instead.
> 
> Note, in the eyes of io_req_normal_work_add(), the SQPOLL task struct
> is always pinned and alive, and sqd->thread can either be the task or
> NULL. It's only problematic if the compiler decides to reload the value
> after the null check, which is not so likely.
> 
> Cc: stable@xxxxxxxxxxxxxxx
> Cc: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
> Reported-by: lizetao <lizetao1@xxxxxxxxxx>
> Fixes: 78f9b61bd8e54 ("io_uring: wake SQPOLL task when task_work is added to an empty queue")
> Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx>
> Link: https://lore.kernel.org/r/1cbbe72cf32c45a8fee96026463024cd8564a7d7.1736541357.git.asml.silence@xxxxxxxxx
> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
> 
> diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
> index d3403c8216db..5eb119002099 100644
> --- a/io_uring/io_uring.c
> +++ b/io_uring/io_uring.c
> @@ -1226,10 +1226,7 @@ static void io_req_normal_work_add(struct io_kiocb *req)
>  
>  	/* SQPOLL doesn't need the task_work added, it'll run it itself */
>  	if (ctx->flags & IORING_SETUP_SQPOLL) {
> -		struct io_sq_data *sqd = ctx->sq_data;
> -
> -		if (sqd->thread)
> -			__set_notify_signal(sqd->thread);
> +		__set_notify_signal(tctx->task);
>  		return;
>  	}

Note, this breaks the build, it applies just fine, it's just that ->task
is not a valid field here :(

thanks,

greg k-h




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux