Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3722159imm; Mon, 18 Jun 2018 03:00:07 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLO9MG+068IQLiN3c5uGyvxRHjNleVoi0ht/IhWIKKG4cvFpm89D5wp3CuHyIP7+zm1Nb1T X-Received: by 2002:a63:5f12:: with SMTP id t18-v6mr10132034pgb.81.1529316007081; Mon, 18 Jun 2018 03:00:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529316007; cv=none; d=google.com; s=arc-20160816; b=KZoDFQbPR1JjTkqWK4FMs1y6M1Wg4CSrdiJCDjAetxS9fRUdPTunI7HV6w+xfSvzTa lSAQUZbN3dHm/kV35qERMf86ydAAxxX1JUc+nNITgJ79myEDEqmkdKjx3kiS360bRr7E oYU90SMy8K3JxlOZdF6mF4+7ps/eTp1SQyJ7/iTQ7Jb8h8o+e+OdxnZvF4CqDZAWoZfb /Va++vU/3zD+nBr9oU/jfUlfn8WMLTujp2A5w5CVBASH4Tx4mOWzrlWBZbaNj4WLFyrZ zWmfKWiBDYlVPEQA8vQrCLjpnA9hlS0AcRhAOYVEoSh0Fzjpkp+4hGp1r8DUzI7QWlgx hZag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=/n/hMojEewAPlF9FRqQW67G6Im+7Z0cLeSP6+Xrkrro=; b=R8JmVUX84ZetJWsJLsjKRzpEH/Wci4C6Vbr9ct5TUUt0/RuKZlMiWb4/czVke7cnHS N6itA1cfRaETA9Qci9TR8+1B2uFg6/dhBDDWVnAujMk/BS5Z6MBXBUPImVyF4j2NhdMa ejTxYXMc602T4meMqKuC/2VGHHKLlBP2j2smRGiZu4Q4p++O1TUqf8yadUemhiq4C17z faN5aO6Jm2vEg9r05BzzJxC7KpRi6tXYa/qn8SdfoGgtghiAkKWiSUmMd9tRg3lB1HXM /VsH19I8LNSuUIneKqfNKfGYG+K/2rtEbrAiWejqULpJODbW0a0U7M6nZbvPnyo+LG4N L6vA== 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 y10-v6si12096907pgq.54.2018.06.18.02.59.53; Mon, 18 Jun 2018 03:00:07 -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 S935460AbeFRIT1 (ORCPT + 99 others); Mon, 18 Jun 2018 04:19:27 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:54848 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935431AbeFRITT (ORCPT ); Mon, 18 Jun 2018 04:19:19 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 26118C7A; Mon, 18 Jun 2018 08:19:18 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jiang Biao , Wen Yang , Tejun Heo , Jens Axboe , Sasha Levin Subject: [PATCH 4.16 060/279] blkcg: init root blkcg_gq under lock Date: Mon, 18 Jun 2018 10:10:45 +0200 Message-Id: <20180618080611.318715435@linuxfoundation.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618080608.851973560@linuxfoundation.org> References: <20180618080608.851973560@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: Jiang Biao [ Upstream commit 901932a3f9b2b80352896be946c6d577c0a9652c ] 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 Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- block/blk-cgroup.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -1142,18 +1142,16 @@ int blkcg_init_queue(struct request_queu 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); @@ -1161,6 +1159,13 @@ int blkcg_init_queue(struct request_queu 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); } /**