From nobody Tue Sep 16 09:17:56 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 33351C4708D for ; Wed, 4 Jan 2023 14:37:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239549AbjADOhX (ORCPT ); Wed, 4 Jan 2023 09:37:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235113AbjADOhT (ORCPT ); Wed, 4 Jan 2023 09:37:19 -0500 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE7EE2DDA for ; Wed, 4 Jan 2023 06:37:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1672843039; x=1704379039; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=HtQ0/PIlNHRHOzAOijbMWgzI9+6drMS+LW1td1A907w=; b=AaookK6FBW806U/I9cE/w+TtrsY3/B4JeARGcNuIz4qMr2GujsF+PR9J y6DL7BmRb9jXRkmB4ZyXRLLOJFg+3RrG+nKiqPPyFuq4qYI0hWhe87i8k MLZ7BsJLEVMrtgyvP/iFSAew3ayEUUgyJNI8XZ6jdMnrz7T+eqpFUICKH 7d3fj/0LDiAZafmurjF/WEaT6Y2SlfpNvLTx+1suVjpU6i1yts/30GY2I bIp7IgkaoGlT2gr74Z7LrLdNAaahTqr4QVs7Aw0wBQfgzSQ9mPfUSMDO+ CMvoBob042Uy6sWf4BehxWh1z2jMxBV7atvUCIaHYerzA7UKAy/S/Qiy+ A==; X-IronPort-AV: E=McAfee;i="6500,9779,10580"; a="309713798" X-IronPort-AV: E=Sophos;i="5.96,300,1665471600"; d="scan'208";a="309713798" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2023 06:37:07 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10580"; a="657128659" X-IronPort-AV: E=Sophos;i="5.96,300,1665471600"; d="scan'208";a="657128659" Received: from zq-optiplex-7090.bj.intel.com ([10.238.156.129]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2023 06:37:05 -0800 From: Zqiang To: akpm@linux-foundation.org, pmladek@suse.com, tj@kernel.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH v2] kthread_worker: Check all delayed works when destroy kthread worker Date: Wed, 4 Jan 2023 22:42:30 +0800 Message-Id: <20230104144230.938521-1-qiang1.zhang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This commit add a check for delayed works, when destroy kthread worker if there are still some pending delayed works will trigger warnning, this remind caller should clear all pending delayed works before destroy kthread worker. Signed-off-by: Zqiang Acked-by: Tejun Heo Reviewed-by: Petr Mladek --- v1->v2: Only add WARN_ON() and function description kernel/kthread.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/kthread.c b/kernel/kthread.c index f97fd01a2932..7e6751b29101 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -1382,6 +1382,10 @@ EXPORT_SYMBOL_GPL(kthread_flush_worker); * Flush and destroy @worker. The simple flush is enough because the kthr= ead * worker API is used only in trivial scenarios. There are no multi-step = state * machines needed. + * + * Note that this function is not responsible for handling delayed work, so + * caller should be responsible for queuing or canceling all delayed work = items + * before invoke this function. */ void kthread_destroy_worker(struct kthread_worker *worker) { @@ -1393,6 +1397,7 @@ void kthread_destroy_worker(struct kthread_worker *wo= rker) =20 kthread_flush_worker(worker); kthread_stop(task); + WARN_ON(!list_empty(&worker->delayed_work_list)); WARN_ON(!list_empty(&worker->work_list)); kfree(worker); } --=20 2.25.1