Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3698925pxv; Mon, 26 Jul 2021 09:40:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJa5HUuzDo5V61pR/NbU+fwFuc1qNuubfhnQyRXGG9TxzlxLOEFQHwGl6ad7yAYHsb46lT X-Received: by 2002:a05:6402:160c:: with SMTP id f12mr2291532edv.122.1627317509590; Mon, 26 Jul 2021 09:38:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627317509; cv=none; d=google.com; s=arc-20160816; b=EfWj8vCQDO23SC9+S2gUeO0ax1sGcKYmI6JSnY7bMpFzfe9eYfcwNss3+G17KdD+4N SdyW3CDj7fkIH3vW5NprUWKOPBKoVJaT63qniVDYMyhOqgzWEorr13JRUyoK833cLv+5 QwxuBzeqfpfjJyLpxwxkI8063S8d7CIdrQ0nzPV3OQJQjBVhjx6IORAMQvKAWyPNr4Vn iVEoIg1Bko0X3+rLFsIHDLysbG8dVRsgF5rrNIfXfhe/GILIWakrSrfIePmXqZN0pGHj xkZkNajep3SgcnJdHZ0gUk8LlT3thikfakGSOggImsgkpNmLPiFxF6QwWv3cWruLqpm6 XQ/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=yBBp/koqYQ663qZT/n+GZHl0R6JBcrReEGBPINkPaLo=; b=SpnQNm8jxM1TM7OlRh/DVc+ikjnrIbQ7hP2fxPSJ4YZ5CYNbrtLCG1Gt+94DUEbeEp KX4HERRjITI2wkv9bv9snY+wp9Jl9tSF1DzcIFb4H+fzEVZWfOM1VcpTwLXHK99OeDJt AFoqcPdQTxoVMBAk/guMvOuCiix0XcXm61Vlxif7K/J6mKa7ZwVD7NSKWTtL5BR9LNuA Ur4ZQvlGrqM0KRY4A9wYA/4g3sa/0Wakc3V69lDg6uoM5wXHxos9k97sJJxC6egp5JUf fY2VzA4uP4hG0KDTXkqXJpKYY5tApgb2PDDNs+hFJJuRd44NmaoH8xdizYKgL3u2Y+Gg 0y8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=vZnUVKzj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cf9si402390edb.132.2021.07.26.09.38.07; Mon, 26 Jul 2021 09:38:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=vZnUVKzj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240274AbhGZPzM (ORCPT + 99 others); Mon, 26 Jul 2021 11:55:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:51742 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237459AbhGZPei (ORCPT ); Mon, 26 Jul 2021 11:34:38 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 772B960240; Mon, 26 Jul 2021 16:15:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1627316105; bh=6BPvIUoAdC+WTyOiM7S32GO6WYWIOb+eZXyLlb41Vwg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vZnUVKzjGCohL+uIHQYyc9xQlMlKRq/70lZ5TM62uWLoahLzRZP7DKLvZ1zvstkuY Cu81gEv0lagIJV7gyL1nUjJyuKicpYQUZ7KjEusgMwQv1WsN0K33uXQhtVteNkN9tB WvOBn1+8oP2L9g4UcCHuwUPyNT+mnaSQbARMVAew= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Olivier Langlois , Pavel Begunkov , Jens Axboe Subject: [PATCH 5.13 144/223] io_uring: Fix race condition when sqp thread goes to sleep Date: Mon, 26 Jul 2021 17:38:56 +0200 Message-Id: <20210726153850.944924889@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210726153846.245305071@linuxfoundation.org> References: <20210726153846.245305071@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Olivier Langlois commit 997135017716c33f3405e86cca5da9567b40a08e upstream. If an asynchronous completion happens before the task is preparing itself to wait and set its state to TASK_INTERRUPTIBLE, the completion will not wake up the sqp thread. Cc: stable@vger.kernel.org Signed-off-by: Olivier Langlois Reviewed-by: Pavel Begunkov Link: https://lore.kernel.org/r/d1419dc32ec6a97b453bee34dc03fa6a02797142.1624473200.git.olivier@trillion01.com Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- fs/io_uring.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -6876,7 +6876,8 @@ static int io_sq_thread(void *data) } prepare_to_wait(&sqd->wait, &wait, TASK_INTERRUPTIBLE); - if (!test_bit(IO_SQ_THREAD_SHOULD_PARK, &sqd->state)) { + if (!test_bit(IO_SQ_THREAD_SHOULD_PARK, &sqd->state) && + !io_run_task_work()) { list_for_each_entry(ctx, &sqd->ctx_list, sqd_list) io_ring_set_wakeup_flag(ctx);