Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp585677ybb; Wed, 1 Apr 2020 06:05:12 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuaNE00WEnkDJ5XLv/AkbUmvYqV+QCg/2gswTIyjQe4QCU//LddTcbvWFFaeFAKaPV8VktD X-Received: by 2002:a4a:9813:: with SMTP id y19mr16819758ooi.56.1585746312317; Wed, 01 Apr 2020 06:05:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585746312; cv=none; d=google.com; s=arc-20160816; b=KffTVJQyzwJ1lw3/4LeJ/39OP+VbCxqmr5GIAf4duZC/xXPPEvf7MsrpdGnPkC7lX0 wZtSdUPW3AZcWGYUi45TDwPDSw7DuoOAbPCn/nnsKDjuERh51EK8IPskS+aexY9l4elb 2+vVOKQiKplcXNhk1x7NklbE5vsU9mI8TdJVGB40ZJ/x/Dqf5VcTsYREXmZ9fiPrwj7E DhYVs/yKale9rmetDMCXL9cd9VNzCVxGwxoMBM0EtNTqaZLzbv3ljOmlkCFyLVlDejcT LVptWsgyFe+fgeyJ1kaQk4Ly3mr7mzwWIJJXsfYzXfsAy6Ik4FCsN+PfURfdPhhc4hU/ w8nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=yYH41wjx+Q0OFx42JnkRXkRQfx7t+I/o1rDNTq4ShnU=; b=tz754YXwt3GKy01fiexWBR1n0ke4WsHiZXL3ygxU9Wu11nWomSamTrUPs6fPpmikMk OzjfsK7PGYkw9Qj9WGuXXkX10Hr4inecuLom7ijdYdC1qZf8tu6nexgYOrHX7puUAR9h QlmoWVVxM8J5aeC1c91CqSBAugW8amaAxxTibLenE3yofIktYj0S8dvi0kTDlrioR0qj 96u41ogvSEk7esUvqtNmjOYabxKm6wAFgT+6CvrPNuY8CYB3DX/uGUAoYaAMQQMgkX3z 3FLhGdJ+v0a+vtSGNsSn4BtJKfXtEJz2G2LX3jpBSKjz4icVdl1twcrp78K6rAN1tzK3 wlCA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 109si836977otv.36.2020.04.01.06.04.54; Wed, 01 Apr 2020 06:05:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732630AbgDAND4 convert rfc822-to-8bit (ORCPT + 99 others); Wed, 1 Apr 2020 09:03:56 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:35084 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732543AbgDANDz (ORCPT ); Wed, 1 Apr 2020 09:03:55 -0400 Received: from bigeasy by Galois.linutronix.de with local (Exim 4.80) (envelope-from ) id 1jJd22-0001Op-G5; Wed, 01 Apr 2020 15:03:46 +0200 Date: Wed, 1 Apr 2020 15:03:46 +0200 From: Sebastian Andrzej Siewior To: Lai Jiangshan Cc: kernel test robot , Thomas Gleixner , Ingo Molnar , "Peter Zijlstra (Intel)" , LKML , LKP , Tejun Heo Subject: Re: [PATCH] workqueue: Don't double assign worker->sleeping Message-ID: <20200401130346.e7cdsqgxppa6ohje@linutronix.de> References: <20200327074308.GY11705@shao2-debian> <20200327175350.rw5gex6cwum3ohnu@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8BIT In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-04-01 11:44:06 [+0800], Lai Jiangshan wrote: > On Wed, Apr 1, 2020 at 11:22 AM Lai Jiangshan wrote: > > > > Hello Hi Lai, … > > 2) wq_worker_running() can be interrupted(async-page-faulted in virtual machine) > > and nr_running would be decreased twice. > > would be *increased* twice > > I just saw the V2 patch, this issue is not listed, but need to be fixed too. | void wq_worker_running(struct task_struct *task) | { | struct worker *worker = kthread_data(task); | | if (!worker->sleeping) | return; | if (!(worker->flags & WORKER_NOT_RUNNING)) | atomic_inc(&worker->pool->nr_running); *0 | worker->sleeping = 0; *1 | } So an interrupt - before *0, the preempting caller drop early in wq_worker_sleeping(), only one atomic_inc() - after *1, the preempting task will invoke wq_worker_sleeping() and do dec() + inc(). What did I miss here? Sebastian