{"id":784692,"url":"http://patchwork.ozlabs.org/api/patches/784692/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20170705152855.GD19330@htj.duckdns.org/","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/projects/2/?format=json","name":"Linux PPC development","link_name":"linuxppc-dev","list_id":"linuxppc-dev.lists.ozlabs.org","list_email":"linuxppc-dev@lists.ozlabs.org","web_url":"https://github.com/linuxppc/wiki/wiki","scm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git","webscm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/","list_archive_url":"https://lore.kernel.org/linuxppc-dev/","list_archive_url_format":"https://lore.kernel.org/linuxppc-dev/{}/","commit_url_format":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}"},"msgid":"<20170705152855.GD19330@htj.duckdns.org>","list_archive_url":"https://lore.kernel.org/linuxppc-dev/20170705152855.GD19330@htj.duckdns.org/","date":"2017-07-05T15:28:55","name":"[next-20170609] Oops while running CPU off-on (cpuset.c/cpuset_can_attach)","commit_ref":null,"pull_url":null,"state":"not-applicable","archived":false,"hash":"25ca0e9bff996b0705f38adab4f9ae6f4caa5b93","submitter":{"id":352,"url":"http://patchwork.ozlabs.org/api/people/352/?format=json","name":"Tejun Heo","email":"tj@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20170705152855.GD19330@htj.duckdns.org/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/784692/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/784692/checks/","tags":{},"related":[],"headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>","X-Original-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3x2lDw1Fg9z9ryv\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu,  6 Jul 2017 01:30:24 +1000 (AEST)","from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3x2lDw01GHzDr1Z\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu,  6 Jul 2017 01:30:24 +1000 (AEST)","from mail-qk0-x241.google.com (mail-qk0-x241.google.com\n\t[IPv6:2607:f8b0:400d:c09::241])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3x2lCL5R7hzDqhn\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tThu,  6 Jul 2017 01:29:02 +1000 (AEST)","by mail-qk0-x241.google.com with SMTP id p21so31711094qke.0\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tWed, 05 Jul 2017 08:29:02 -0700 (PDT)","from localhost ([2620:10d:c091:380::1:edfd])\n\tby smtp.gmail.com with ESMTPSA id\n\to23sm17406965qko.67.2017.07.05.08.28.57\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tWed, 05 Jul 2017 08:28:58 -0700 (PDT)"],"Authentication-Results":["ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"ZVNFWKHD\"; dkim-atps=neutral","lists.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"ZVNFWKHD\"; dkim-atps=neutral","lists.ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"ZVNFWKHD\"; dkim-atps=neutral"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=sender:date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=OHcMKUDZ13/lZskVWv7xa4jbU8W6BNUrPHIDjGeL3y4=;\n\tb=ZVNFWKHDtEeV+9nyIJUeQdoFjlw/GseBPvPIRT3mRYHMFPTJ37+s5qoccvcbWsd8XD\n\t5TRqyfICCm1IS2Ggm5ZMOH1zo5MJ9VRpvBDCc3UGlSvBEh00m6u9YE7H8IfCnf+Paq1X\n\tOT+7p/IQfLznlQt87cacuhGAHe4yS4DmJpGGPW5tChWeCcjtf7McNWQo/u8ik1kZdSG1\n\tzPT8xKWTSa6L4b+NXI1BA99172cY4DnwLzM+iyAuX4SVaS/Z1U2qnQm1rUtkzd/kWikI\n\tWPJFNWxp6K0UQiZGH0lYkZ3dgpeknKKzyDzEQnalr4TNZeVEhqQbE7yyvEdj2dnnSHFc\n\t6/Ng==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:date:from:to:cc:subject:message-id\n\t:references:mime-version:content-disposition:in-reply-to:user-agent; \n\tbh=OHcMKUDZ13/lZskVWv7xa4jbU8W6BNUrPHIDjGeL3y4=;\n\tb=YLrQnpeKGFVl9JG/fZr1p2xK64sM7TruuGJzcIfVG9lw3Bd9aKJ3Rb4Tr8VjKHn4IE\n\tox6StzXPqwQk03z/nEGKSKaLz6Er3b1kLQVqFe/hEJtV5FsOAwR8EAKlerAQHNqa/p99\n\tE1ME2NxNg9vj9LwVBO+FyF521+gb1Gek3/9g7crrQ8/GhtqvjoinRbLclo4Y92K2TI4t\n\t8uVr1BBy2XB6t4Cs7d5tPCdT5VrjyH7ATDqQYYjXMoB8UjopC+dCcgymHyPcxDQyDVaj\n\tPbINSkylruhyUHyIfHb28j65lvG209q8nUoa0tA9noI0Mo1dKpBoY3QD1qgLeopu+uUw\n\tdnnw==","X-Gm-Message-State":"AIVw113XUP6IxMff2bNQL+FZ9O+P9upWwMS6BQI4OWUmoEaUUTWK/8N0\n\tu+YUAY7nhWF0hQ==","X-Received":"by 10.55.167.209 with SMTP id\n\tq200mr24388434qke.129.1499268540215; \n\tWed, 05 Jul 2017 08:29:00 -0700 (PDT)","Date":"Wed, 5 Jul 2017 11:28:55 -0400","From":"Tejun Heo <tj@kernel.org>","To":"Abdul Haleem <abdhalee@linux.vnet.ibm.com>","Subject":"Re: [next-20170609] Oops while running CPU off-on\n\t(cpuset.c/cpuset_can_attach)","Message-ID":"<20170705152855.GD19330@htj.duckdns.org>","References":"<1497266622.15415.39.camel@abdul.in.ibm.com>\n\t<20170627153608.GD2289@htj.duckdns.org>\n\t<1499092582.10651.15.camel@abdul.in.ibm.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<1499092582.10651.15.camel@abdul.in.ibm.com>","User-Agent":"Mutt/1.8.3 (2017-05-23)","X-BeenThere":"linuxppc-dev@lists.ozlabs.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>","List-Unsubscribe":"<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>","List-Archive":"<http://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>","List-Subscribe":"<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>","Cc":"sachinp <sachinp@linux.vnet.ibm.com>,\n\tStephen Rothwell <sfr@canb.auug.org.au>, ego <ego@linux.vnet.ibm.com>,\n\tlinux-kernel <linux-kernel@vger.kernel.org>,\n\tLi Zefan <lizefan@huawei.com>, \n\tlinuxppc-dev <linuxppc-dev@lists.ozlabs.org>,\n\tIngo Molnar <mingo@kernel.org>","Errors-To":"linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org","Sender":"\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"},"content":"Hello, Abdul.\n\nThanks for the debug info.  Can you please see whether the following\npatch fixes the issue?  If the problem is too difficult to reproduce\nto confirm the fix by seeing whether it no longer triggers, please let\nme know.  We can instead apply a patch which triggers WARN on the\nfailing condition to confirm the diagnosis.\n\nThanks.","diff":"diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h\nindex 793565c05742..8b4c3c2f2509 100644\n--- a/kernel/cgroup/cgroup-internal.h\n+++ b/kernel/cgroup/cgroup-internal.h\n@@ -33,6 +33,9 @@ struct cgroup_taskset {\n \tstruct list_head\tsrc_csets;\n \tstruct list_head\tdst_csets;\n \n+\t/* the number of tasks in the set */\n+\tint\t\t\tnr_tasks;\n+\n \t/* the subsys currently being processed */\n \tint\t\t\tssid;\n \ndiff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c\nindex dbfd7028b1c6..e3c4152741a3 100644\n--- a/kernel/cgroup/cgroup.c\n+++ b/kernel/cgroup/cgroup.c\n@@ -1954,6 +1954,8 @@ static void cgroup_migrate_add_task(struct task_struct *task,\n \tif (!cset->mg_src_cgrp)\n \t\treturn;\n \n+\tmgctx->tset.nr_tasks++;\n+\n \tlist_move_tail(&task->cg_list, &cset->mg_tasks);\n \tif (list_empty(&cset->mg_node))\n \t\tlist_add_tail(&cset->mg_node,\n@@ -2047,16 +2049,18 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)\n \t\treturn 0;\n \n \t/* check that we can legitimately attach to the cgroup */\n-\tdo_each_subsys_mask(ss, ssid, mgctx->ss_mask) {\n-\t\tif (ss->can_attach) {\n-\t\t\ttset->ssid = ssid;\n-\t\t\tret = ss->can_attach(tset);\n-\t\t\tif (ret) {\n-\t\t\t\tfailed_ssid = ssid;\n-\t\t\t\tgoto out_cancel_attach;\n+\tif (tset->nr_tasks) {\n+\t\tdo_each_subsys_mask(ss, ssid, mgctx->ss_mask) {\n+\t\t\tif (ss->can_attach) {\n+\t\t\t\ttset->ssid = ssid;\n+\t\t\t\tret = ss->can_attach(tset);\n+\t\t\t\tif (ret) {\n+\t\t\t\t\tfailed_ssid = ssid;\n+\t\t\t\t\tgoto out_cancel_attach;\n+\t\t\t\t}\n \t\t\t}\n-\t\t}\n-\t} while_each_subsys_mask();\n+\t\t} while_each_subsys_mask();\n+\t}\n \n \t/*\n \t * Now that we're guaranteed success, proceed to move all tasks to\n@@ -2085,25 +2089,29 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)\n \t */\n \ttset->csets = &tset->dst_csets;\n \n-\tdo_each_subsys_mask(ss, ssid, mgctx->ss_mask) {\n-\t\tif (ss->attach) {\n-\t\t\ttset->ssid = ssid;\n-\t\t\tss->attach(tset);\n-\t\t}\n-\t} while_each_subsys_mask();\n+\tif (tset->nr_tasks) {\n+\t\tdo_each_subsys_mask(ss, ssid, mgctx->ss_mask) {\n+\t\t\tif (ss->attach) {\n+\t\t\t\ttset->ssid = ssid;\n+\t\t\t\tss->attach(tset);\n+\t\t\t}\n+\t\t} while_each_subsys_mask();\n+\t}\n \n \tret = 0;\n \tgoto out_release_tset;\n \n out_cancel_attach:\n-\tdo_each_subsys_mask(ss, ssid, mgctx->ss_mask) {\n-\t\tif (ssid == failed_ssid)\n-\t\t\tbreak;\n-\t\tif (ss->cancel_attach) {\n-\t\t\ttset->ssid = ssid;\n-\t\t\tss->cancel_attach(tset);\n-\t\t}\n-\t} while_each_subsys_mask();\n+\tif (tset->nr_tasks) {\n+\t\tdo_each_subsys_mask(ss, ssid, mgctx->ss_mask) {\n+\t\t\tif (ssid == failed_ssid)\n+\t\t\t\tbreak;\n+\t\t\tif (ss->cancel_attach) {\n+\t\t\t\ttset->ssid = ssid;\n+\t\t\t\tss->cancel_attach(tset);\n+\t\t\t}\n+\t\t} while_each_subsys_mask();\n+\t}\n out_release_tset:\n \tspin_lock_irq(&css_set_lock);\n \tlist_splice_init(&tset->dst_csets, &tset->src_csets);\n","prefixes":["next-20170609"]}