From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tejun Heo Subject: [PATCH 01/11] cgroup: cgroup->subsys[] should be cleared after the css is offlined Date: Thu, 13 Mar 2014 15:50:03 -0400 Message-ID: <1394740213-17626-2-git-send-email-tj@kernel.org> References: <1394740213-17626-1-git-send-email-tj@kernel.org> 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=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=RLeo1Y6ibV/jdjeTRtqSjog+yV4nOh+vAxwEoZAjs8Y=; b=Cc80Ey49u6gb77HJHE/kvpwVBpYB8TsTx0auzYGSBKLc21untgofRF7U5kzrHZCOvv RjuGIsX0tF/kZLenVZVx4zoGr0pZOgJ4Vq74UK2XGcWRhJ8o4TjANJom0J5FCwyQIkb0 dEkJ9nxEkVCIqU1lhUKr3Oa6lcjdleQP9E6DdutCuGqcbllfpMvO3rh2e35TE475gdlP BEq9bJrU3gFB5OGKm+CBiibAKRUY5KXhN6lPztCJd1fZhgNapTsMed4V5gZC9KqD4WQ8 pre1b1cx2IeiBc4ACItz1Lpume+SzPgtQBTwS43BojoW683u56C3HQ/gJYmrpaJWjqSS bRGQ== In-Reply-To: <1394740213-17626-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 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: lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org Cc: Tejun Heo , cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org After a css finishes offlining, offline_css() mistakenly performs RCU_INIT_POINTER(css->cgroup->subsys[ss->id], css) which just sets the cgroup->subsys[] pointer to the current value. The intention was to clear it after offline is complete, not reassign the same value. Update it to assign NULL instead of the current value. This makes cgroup_css() to return NULL once offline is complete. All the existing users of the function either can handle NULL return already or guarantee that the css doesn't get offlined. While this is a bugfix, as css lifetime is currently tied to the cgroup it belongs to, this bug doesn't cause any actual problems. Signed-off-by: Tejun Heo --- kernel/cgroup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 306ad0e..ca19735 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -3535,7 +3535,7 @@ static void offline_css(struct cgroup_subsys_state *css) css->flags &= ~CSS_ONLINE; css->cgroup->nr_css--; - RCU_INIT_POINTER(css->cgroup->subsys[ss->id], css); + RCU_INIT_POINTER(css->cgroup->subsys[ss->id], NULL); } /** -- 1.8.5.3