Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp7045ybt; Tue, 23 Jun 2020 13:50:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy7xdcL210EM7wpxSVhsSnSktpiRLy01C2AN8CGAIBs/NcgcsG6qiIJv0YHhqGej1nZ2NDo X-Received: by 2002:a17:907:7245:: with SMTP id ds5mr501425ejc.1.1592945426941; Tue, 23 Jun 2020 13:50:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592945426; cv=none; d=google.com; s=arc-20160816; b=HZ0FEFOsPqAk+Nf18c5I+HMJ2RfUXUTsZEVW2Ez8c5UL2UkA22rNqi+iii5pydF3cj fjTOoITZeGQrRvARl78d7TJ59/QAvs6bNUcidwOl7csXtXCCXraLpkDEzOz8Br5d4YiT ZTctIAFXtQD59/P3Er3PR+7oO/Gd12WDSz/zaNo/axrSrhFl7HCcWJkl/KSjJ8rd8bUr gySeFo/NVfCkGAku+nrRYKcx7mjuzRqZQmShlxRC9YjBvQbMJrRR7JOnInGSvkmi7/rC c4o/fnm7nCyKauXGKiVXqADv3qBMszgLOGuLLEjpnCjRcTbeY5CskFUcvmILS05G21A1 7zWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=wMBTMnTgu632ZMDg9l41WM94viGcb7/7XcZzHEMwqGM=; b=xA8qDoN1sTbAjnUnLa49DsfThC/gG3roUaQOKOCFrWgKxG6BAvt5GxLCUWhPoEidHw 2uiRuX/F4EACBgzHFPiWyfadeK/42qyMs2HcSe7z2oKrgNIoWo8ik0fDNSJ6QUQZLsYV 9PTOtAO/7Lb01gYtwsjFxWi1BbpfCYoqjBfXRIDKgGsI6rWiE38CajZpJtOckKkqO99e Swj8evPFC3DJvijJFk03H35xkVX1hKwQlhtLVt58pErIoTqkwpIvhT1J03PDG+vMkt/2 mNsBnNNaNi5WrPk1UrNRn8GcJWj0hHBFMpsH7F5Gtzq+i9mvsxmvsl7d7U/bQyJTvDG4 3Gpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vASzgM7D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bx5si7105541edb.375.2020.06.23.13.50.03; Tue, 23 Jun 2020 13:50:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vASzgM7D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392324AbgFWUsY (ORCPT + 99 others); Tue, 23 Jun 2020 16:48:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:47408 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392936AbgFWUsX (ORCPT ); Tue, 23 Jun 2020 16:48:23 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0AA9221582; Tue, 23 Jun 2020 20:48:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592945303; bh=Z7MgLABaEcjFwT2VaSQCZaosSX4/V77Xd/L2Oy4OCDA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vASzgM7DpcB9EWXkqCbvXfJyXhWrtP+XFs+y7kQoGbGTQCyzJyLFgNWEMk4E2hi2f 8hiC63yu76MHZ/ntaKn1xPGcFeA3Lu49nT9DiRE6aOea+2V/y/w0W/IujMFsU/pZaO 00hbdCBT8stRSmKA9Jh7IaxnsTlV8BokVVPxqdDc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Ahmed S. Darwish" , Sebastian Andrzej Siewior , Jens Axboe , Sasha Levin Subject: [PATCH 4.14 118/136] block: nr_sects_write(): Disable preemption on seqcount write Date: Tue, 23 Jun 2020 21:59:34 +0200 Message-Id: <20200623195309.660019420@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200623195303.601828702@linuxfoundation.org> References: <20200623195303.601828702@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ahmed S. Darwish [ Upstream commit 15b81ce5abdc4b502aa31dff2d415b79d2349d2f ] For optimized block readers not holding a mutex, the "number of sectors" 64-bit value is protected from tearing on 32-bit architectures by a sequence counter. Disable preemption before entering that sequence counter's write side critical section. Otherwise, the read side can preempt the write side section and spin for the entire scheduler tick. If the reader belongs to a real-time scheduling class, it can spin forever and the kernel will livelock. Fixes: c83f6bf98dc1 ("block: add partition resize function to blkpg ioctl") Cc: Signed-off-by: Ahmed S. Darwish Reviewed-by: Sebastian Andrzej Siewior Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- include/linux/genhd.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 550fa358893ae..37f30d62f3a2e 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -693,9 +693,11 @@ static inline sector_t part_nr_sects_read(struct hd_struct *part) static inline void part_nr_sects_write(struct hd_struct *part, sector_t size) { #if BITS_PER_LONG==32 && defined(CONFIG_LBDAF) && defined(CONFIG_SMP) + preempt_disable(); write_seqcount_begin(&part->nr_sects_seq); part->nr_sects = size; write_seqcount_end(&part->nr_sects_seq); + preempt_enable(); #elif BITS_PER_LONG==32 && defined(CONFIG_LBDAF) && defined(CONFIG_PREEMPT) preempt_disable(); part->nr_sects = size; -- 2.25.1