Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp814635ybt; Tue, 7 Jul 2020 00:34:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyVAf/YBazWa7XWltKpV30ZD6OSBeQSFme1ZGDXuaG5RKWeH8NoeQNYw8vEBPdX+vUN5QE0 X-Received: by 2002:aa7:dd8e:: with SMTP id g14mr61714802edv.208.1594107285079; Tue, 07 Jul 2020 00:34:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594107285; cv=none; d=google.com; s=arc-20160816; b=kTBMIOxgRnK8p3n/q4ZwNxmxifI1ttvWTR7ZVFOLtbhkMyZqmEcFrg5NCCKabaTaXq WA77UEkD5xUIzxe/H6CaX49y3CVrCcV74MJLRVIjBV9wzR1nDMkR7fq8LMkuDF6fKVPr HeF/HCVOZxxmxcD8Tv5atZG4jW/9rlXUlB1cgO7+tuDND2EEy5NbWP7zRsbdDgHu/u4V BpsxH92aPvX5tXMru2W66MqbybnYqSVSpd/hAzMHFcxoxh1t1ldzRwNOki3s6mpmS0ak eD+e7op2sUbmOgj/RtlOgFfhmFayRjkw3P836FQ8403/rgAQCsUqW7q3G0sINq6RQgRd ON8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=G9xmbNN1McsuQ/n1WJYlgKEhFXGpYTPfLNVF6+dj3QI=; b=T1euMHbc0cpZ3B2zkQdkPidRMA6lJT9rHEi6yJj964Qb8rz17VPP9Pqh7CGMnjVN6C MmjZ77sA76rBH/n1/PNSQo23tc2AR/HiyX/z9CmJAr160F8OMg134vscVaE7L9B7uqHI E5lNLn2w1daELhrebqwCvl4cysSilVMTfgaJoJHwTOKKSlqhzCi2izbhhfynd1D3jq22 /5ucTUuymerbRaWCCQ6FE4eoI+NxfMyefsO0vnC+dPsoU1dUkIhfpeN3yIiDEfG86U+v mn3YQqlEIWqfmq6as/6/wrNDrGoOduNvstJhXh6D+RgmOiKRIIVpKjlitfFY1B3q1M2w 575g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b21si13096150ejz.710.2020.07.07.00.34.21; Tue, 07 Jul 2020 00:34:45 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727834AbgGGHdn (ORCPT + 99 others); Tue, 7 Jul 2020 03:33:43 -0400 Received: from mail.windriver.com ([147.11.1.11]:41411 "EHLO mail.windriver.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725825AbgGGHdn (ORCPT ); Tue, 7 Jul 2020 03:33:43 -0400 Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail.windriver.com (8.15.2/8.15.2) with ESMTPS id 0677X0fZ013531 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Tue, 7 Jul 2020 00:33:00 -0700 (PDT) Received: from pek-lpg-core1-vm1.wrs.com (128.224.156.106) by ALA-HCA.corp.ad.wrs.com (147.11.189.40) with Microsoft SMTP Server id 14.3.487.0; Tue, 7 Jul 2020 00:32:59 -0700 From: To: , , , , , CC: , , , Subject: [PATCH v4] kthread: Work could not be queued when worker being destroyed Date: Mon, 6 Jul 2020 13:46:47 +0800 Message-ID: <20200706054647.5344-1-qiang.zhang@windriver.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Zhang Qiang Before the work is put into the queue of the worker thread, the state of the worker thread needs to be detected,because the worker thread may be in the destruction state at this time. Signed-off-by: Zhang Qiang Suggested-by: Petr Mladek Reviewed-by: Petr Mladek --- v1->v2: Add warning information for condition "!worker->task". v2->v3: Modify submission information and add "Reviewed-by" tags. v3->v4: Fix spi controller register trigger Warning. when a spi controller register, a "kthread_worker_fn" worker is created through "kthread_run" instead of "kthread_create_worker" which in this func the "worker->task" will be initialized. and then the "spi_start_queue" func queue a work to worker queue, at this time, if the worker has not begin to running, the "!worker->task" will be true, so a warning is triggered. kernel/kthread.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/kthread.c b/kernel/kthread.c index bfbfa481be3a..825bd4dcdb95 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -791,6 +791,11 @@ static inline bool queuing_blocked(struct kthread_worker *worker, { lockdep_assert_held(&worker->lock); + if (kthread_should_stop()) { + WARN_ON(1); + return true; + } + return !list_empty(&work->node) || work->canceling; } -- 2.24.1