From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Thelen Subject: [PATCH] cgroup: avoid creating degenerate allcg_list Date: Wed, 28 Nov 2012 10:26:32 -0800 Message-ID: <1354127192-22153-1-git-send-email-gthelen@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=3TqT+pV4X2kUgqX1DYpTSMtuirpukwir6A1uKzQ71Xc=; b=XVllTW91PmlrA83cXPHjY8+Q134NrO8N1aF7cTuGJSPQ0M2fvgkgMyjNLs1RxJDEER s5LdoUrOYI8y3LZOhw7x98Nt8wIKqXoc37Sh97vQZxAu+Kkt49mDc19bPlGdh0LSNAUN 98n6ZgzRhAf+Id1MgZ8UC2mzspHvOM64YKM/MaFOVcbdxh8O+tgX0BXi3VBvaeJogztg 2Yk9+8tc5cZ16rh9knh+fATreYeMuuO5TCGrHBA93fu4+qeVTC66ml+PikbKNs5fWj9C zqF9y+M8L7lPsuT9TLXvtANLClazyzhstGTsmaSuujUIMknY2Xmuja/ZhuSdAnehUtFS LrSQ== List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Tejun Heo , Li Zefan Cc: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Before this patch init_cgroup_root() created a degenerate list by first inserting a element into allcg_list and then initializing the inserted list element. The initialization reset the element's prev/next fields forming a degenerate list where allcg_list pointed to element, but element pointed to itself. This problem was introduced in 2243076ad128 "cgroup: initialize cgrp->allcg_node in init_cgroup_housekeeping()". CONFIG_DEBUG_LIST reported a list_add corruption in cgroup_mkdir() running next-20121127 (ce2931a). This patch fixes the problem by performing element initialization before insertion. Signed-off-by: Greg Thelen --- kernel/cgroup.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 01d5342..ece60d4 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -1394,6 +1394,7 @@ static void init_cgroup_root(struct cgroupfs_root *root) { struct cgroup *cgrp = &root->top_cgroup; + init_cgroup_housekeeping(cgrp); INIT_LIST_HEAD(&root->subsys_list); INIT_LIST_HEAD(&root->root_list); INIT_LIST_HEAD(&root->allcg_list); @@ -1401,7 +1402,6 @@ static void init_cgroup_root(struct cgroupfs_root *root) cgrp->root = root; cgrp->top_cgroup = cgrp; list_add_tail(&cgrp->allcg_node, &root->allcg_list); - init_cgroup_housekeeping(cgrp); } static bool init_root_id(struct cgroupfs_root *root) -- 1.7.7.3 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755922Ab2K1Sd7 (ORCPT ); Wed, 28 Nov 2012 13:33:59 -0500 Received: from mail-we0-f202.google.com ([74.125.82.202]:33026 "EHLO mail-we0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755899Ab2K1Sd5 (ORCPT ); Wed, 28 Nov 2012 13:33:57 -0500 From: Greg Thelen To: Tejun Heo , Li Zefan Cc: containers@lists.linux-foundation.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Thelen Subject: [PATCH] cgroup: avoid creating degenerate allcg_list Date: Wed, 28 Nov 2012 10:26:32 -0800 Message-Id: <1354127192-22153-1-git-send-email-gthelen@google.com> X-Mailer: git-send-email 1.7.7.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before this patch init_cgroup_root() created a degenerate list by first inserting a element into allcg_list and then initializing the inserted list element. The initialization reset the element's prev/next fields forming a degenerate list where allcg_list pointed to element, but element pointed to itself. This problem was introduced in 2243076ad128 "cgroup: initialize cgrp->allcg_node in init_cgroup_housekeeping()". CONFIG_DEBUG_LIST reported a list_add corruption in cgroup_mkdir() running next-20121127 (ce2931a). This patch fixes the problem by performing element initialization before insertion. Signed-off-by: Greg Thelen --- kernel/cgroup.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 01d5342..ece60d4 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -1394,6 +1394,7 @@ static void init_cgroup_root(struct cgroupfs_root *root) { struct cgroup *cgrp = &root->top_cgroup; + init_cgroup_housekeeping(cgrp); INIT_LIST_HEAD(&root->subsys_list); INIT_LIST_HEAD(&root->root_list); INIT_LIST_HEAD(&root->allcg_list); @@ -1401,7 +1402,6 @@ static void init_cgroup_root(struct cgroupfs_root *root) cgrp->root = root; cgrp->top_cgroup = cgrp; list_add_tail(&cgrp->allcg_node, &root->allcg_list); - init_cgroup_housekeeping(cgrp); } static bool init_root_id(struct cgroupfs_root *root) -- 1.7.7.3