Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp726509pxb; Fri, 14 Jan 2022 15:06:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJxdyfpZqsxdN3XhmDxfqDZ5FRA3EZ0Z8DbiM5l67ZwD59DbpbpCQlLo5j+IP4YnwHc3RhiV X-Received: by 2002:a17:90a:2e85:: with SMTP id r5mr6105005pjd.149.1642201618407; Fri, 14 Jan 2022 15:06:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642201618; cv=none; d=google.com; s=arc-20160816; b=QFdWTtlo+q5qBabLKPhKQnLotGzmh5rAjHBqtBl5qfjSsOXKNkj30/pJMdMLY51S+w PUr3RKJlkKuR/sMeDSYDYDnFYoRI7YarR3GPIQEMl07KWlkXrKJXS2vQcsqL8KZABuTQ 9pFzTFLi1WQOa12QAtadeOfW7GoKrB/WE5bm5sLAricChU1TqnXFRg2hXXI0Xp+mzqCd rkIrZI+Yd9Gl6Z8ASiCeKbsA+BPRi3Z8Tr6S6gJ60Anp7l7CCR8Hh4TvUBAjpaUXpJW5 5Q4apPvXlbMavDL4HuJObyRqfjBB4FZ7EM3ZZR4XQPae0il6fT51CVG17yss9NLG5nyW +C6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=3JSMWn4K5l2lYnB0cb+D9eToBHXluoZS4fKlQdOWiSk=; b=IkvwxEQpr4xAxzxPU8I/MEIrLfpUtmOZg37YVpk53d2hbDYZJINogHbIoAizPnAT44 ucqXd4Dg26PK92B8uhLA82YDE6x0qVU0ZUd/lp0LuIlyTCL1Tl2V3DE+mEk+TMZUTIZY yEAMFaXpt/0MTg3VRuJQ7NiQxBKZhTkj1u7rk2cxbBu4f5+Ao+JnCc58a6eYd56n4UD6 Pqzavq85JMa+aQl86i9RH9TXcdAT4p6om5GU3JtpYLbNvRHrw/raRQDHhk/Mnd5NSdOW b//MKfhAVg/66MCo7Z6k8nsC+np2+XJCe5DgZMQs9eA9+12KrQa1zkgTMK0c37u5N7EV bsaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Z36ISIVz; 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p25si7922730pfh.201.2022.01.14.15.06.45; Fri, 14 Jan 2022 15:06:58 -0800 (PST) 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=@redhat.com header.s=mimecast20190719 header.b=Z36ISIVz; 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239924AbiANUgg (ORCPT + 99 others); Fri, 14 Jan 2022 15:36:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:32213 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244517AbiANUdo (ORCPT ); Fri, 14 Jan 2022 15:33:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1642192424; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3JSMWn4K5l2lYnB0cb+D9eToBHXluoZS4fKlQdOWiSk=; b=Z36ISIVz0QZbl1/eqQz31w3n5bXp6M8MPG7dQmxSPQz/1fxR8n7CdOEADX7ru8Tj3LCdEQ ksiewvzmou4zpsMBdL2TcmKxdfsVfg0qTVsWJFXdrrdy+8MSmCAbUvEtScPNcO1DHch07y a/TcU6HHyMDVcIyXQVU/McJ1AD5AV0s= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-433-NXrQ9h4EM4mJuP9QXCWvpA-1; Fri, 14 Jan 2022 15:33:38 -0500 X-MC-Unique: NXrQ9h4EM4mJuP9QXCWvpA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A03AB104FC0D; Fri, 14 Jan 2022 20:33:36 +0000 (UTC) Received: from [10.22.33.90] (unknown [10.22.33.90]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5A96F4BC41; Fri, 14 Jan 2022 20:33:35 +0000 (UTC) Message-ID: <8bda2a8d-7faf-621d-c3c0-6351a49219ea@redhat.com> Date: Fri, 14 Jan 2022 15:33:34 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 Subject: Re: [Question] set_cpus_allowed_ptr() call failed at cpuset_attach() Content-Language: en-US To: Tejun Heo , Zhang Qiao Cc: lizefan.x@bytedance.com, hannes@cmpxchg.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?Q?Michal_Koutn=c3=bd?= References: <09ce5796-798e-83d0-f1a6-ba38a787bfc5@huawei.com> <4415cd09-6de3-bb2d-386d-8beb4927fb46@huawei.com> From: Waiman Long In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/14/22 11:20, Tejun Heo wrote: > (cc'ing Waiman and Michal and quoting whole body) > > Seems sane to me but let's hear what Waiman and Michal think. > > On Fri, Jan 14, 2022 at 09:15:06AM +0800, Zhang Qiao wrote: >> Hello everyone >> >> I found the following warning log on qemu. I migrated a task from one cpuset cgroup to >> another, while I also performed the cpu hotplug operation, and got following calltrace. >> >> This may lead to a inconsistency between the affinity of the task and cpuset.cpus of the >> dest cpuset, but this task can be successfully migrated to the dest cpuset cgroup. >> >> Can we use cpus_read_lock()/cpus_read_unlock() to guarantee that set_cpus_allowed_ptr() >> doesn't fail, as follows: >> >> diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c >> index d0e163a02099..2535d23d2c51 100644 >> --- a/kernel/cgroup/cpuset.c >> +++ b/kernel/cgroup/cpuset.c >> @@ -2265,6 +2265,7 @@ static void cpuset_attach(struct cgroup_taskset *tset) >> guarantee_online_mems(cs, &cpuset_attach_nodemask_to); >> >> cgroup_taskset_for_each(task, css, tset) { >> + cpus_read_lock(); >> if (cs != &top_cpuset) >> guarantee_online_cpus(task, cpus_attach); >> else >> @@ -2274,6 +2275,7 @@ static void cpuset_attach(struct cgroup_taskset *tset) >> * fail. TODO: have a better way to handle failure here >> */ >> WARN_ON_ONCE(set_cpus_allowed_ptr(task, cpus_attach)); >> + cpus_read_unlock(); >> >> >> Is there a better solution? >> >> Thanks The change looks OK to me. However, we may need to run the full set of regression test to make sure that lockdep won't complain about potential deadlock. Cheers, Longman