Received: by 10.192.165.156 with SMTP id m28csp235192imm; Wed, 18 Apr 2018 21:09:25 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/Z6Nr8Dx/Bpbx/3J7n1FfjR+DNV0JUQee5ydyJlAq/ME3VDFbNFva408vd+V/pj+Bx48H9 X-Received: by 10.99.145.196 with SMTP id l187mr3806578pge.261.1524110965913; Wed, 18 Apr 2018 21:09:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524110965; cv=none; d=google.com; s=arc-20160816; b=sFPUaq2r8iCDE4H2wkbDlLITf6vObQf0q1utxRoTPEP4TslPZ7IvD4nW6r9Md/i/zs y/LyT0h225+gwHxPJnpLDI97xU34yFKLoAYcXT8CbWEmRHpGPfYaMkvC37rq2v7mgjkt wN1n492Kod8TGz7Ntgupjh9sNToXNIo4WxjEacf6dnsOuSZpRSli5DT0v0dbeAqUDjE3 iDxrdlsoac0WIvEVNxAYqZPJ5KbyYH2TaMnqK66k9LfdknsqgieXiTJZ6J5lRK2ox+1m fGmB6TecuTq9utnYSdjnB/J1ejJ5OKvCK4HoHgADPiIM+vyPhVM926XjNeaS6pyOUCQz X85Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=QcKLPEhEt8Uw2Wn0DhWqM9nHSrXHzwyfRynhUJxqaWE=; b=yO3yy9qoQQs8EJv9TUEg5uB9mMv+r/URCt0XI1/2BHrqyYczdxuTGeKnLBH0aGE0va eYkvvv+lfsa6wua0okJTiWInyvlkZeUwCbwrpXBiaTw40DR/8SrFZ/38fg/f2zvQ/rsX 2tArKbtgU6CWpN4G1d6BKTRKYXxnm7YyQGx6yqTtgNYpClTGZr+WURqlfd8wLCwTfGqW mUFkYBMKum+SDvG6M2j+AWaiFwnX/ymhhQ08fUFWm9JzXWA9IrT1BJHvyppgkxdM4Uld oywr57uN7H90i7Ceu3UMmXmQ9PxU5w/U+hfPM9anOoYVxMD+w0lsrqbrKSDBvB4l+D5R eZbA== 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 u3si2519079pfh.145.2018.04.18.21.09.11; Wed, 18 Apr 2018 21:09:25 -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 S1752807AbeDSEH5 (ORCPT + 99 others); Thu, 19 Apr 2018 00:07:57 -0400 Received: from mxhk.zte.com.cn ([63.217.80.70]:10716 "EHLO mxhk.zte.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750974AbeDSEH4 (ORCPT ); Thu, 19 Apr 2018 00:07:56 -0400 Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Forcepoint Email with ESMTPS id 20B206FC7A3F3197A994; Thu, 19 Apr 2018 12:07:55 +0800 (CST) Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id w3J47pab052748; Thu, 19 Apr 2018 12:07:51 +0800 (GMT-8) (envelope-from jiang.biao2@zte.com.cn) Received: from localhost.localdomain ([10.75.10.200]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2018041912075773-6093831 ; Thu, 19 Apr 2018 12:07:57 +0800 From: Jiang Biao To: axboe@kernel.dk Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, tj@kernel.org, jiang.biao2@zte.com.cn, zhong.weidong@zte.com.cn, wen.yang99@zte.com.cn Subject: [PATCH 2/2] blkcg: init root blkcg_gq under lock Date: Thu, 19 Apr 2018 12:06:09 +0800 Message-Id: <1524110769-107033-1-git-send-email-jiang.biao2@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2018-04-19 12:07:57, Serialize by Router on notes_smtp/zte_ltd(Release 9.0.1FP7|August 17, 2016) at 2018-04-19 12:07:39, Serialize complete at 2018-04-19 12:07:39 X-MAIL: mse01.zte.com.cn w3J47pab052748 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The initializing of q->root_blkg is currently outside of queue lock and rcu, so the blkg may be destroied before the initializing, which may cause dangling/null references. On the other side, the destroys of blkg are protected by queue lock or rcu. Put the initializing inside the queue lock and rcu to make it safer. Signed-off-by: Jiang Biao Signed-off-by: Wen Yang CC: Tejun Heo CC: Jens Axboe --- block/blk-cgroup.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 07e3359..ec86837 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -1138,18 +1138,16 @@ int blkcg_init_queue(struct request_queue *q) rcu_read_lock(); spin_lock_irq(q->queue_lock); blkg = blkg_create(&blkcg_root, q, new_blkg); + if (IS_ERR(blkg)) + goto err_unlock; + q->root_blkg = blkg; + q->root_rl.blkg = blkg; spin_unlock_irq(q->queue_lock); rcu_read_unlock(); if (preloaded) radix_tree_preload_end(); - if (IS_ERR(blkg)) - return PTR_ERR(blkg); - - q->root_blkg = blkg; - q->root_rl.blkg = blkg; - ret = blk_throtl_init(q); if (ret) { spin_lock_irq(q->queue_lock); @@ -1157,6 +1155,13 @@ int blkcg_init_queue(struct request_queue *q) spin_unlock_irq(q->queue_lock); } return ret; + +err_unlock: + spin_unlock_irq(q->queue_lock); + rcu_read_unlock(); + if (preloaded) + radix_tree_preload_end(); + return PTR_ERR(blkg); } /** -- 2.7.4