Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp894460ybt; Fri, 19 Jun 2020 17:15:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyePy0UtaFvW7InsrNlqLHcWH1j6V9vCLFhJ9PHQxLLHH11GQ+KZg4zrgeNc8shNNzuGU5w X-Received: by 2002:a17:906:2c08:: with SMTP id e8mr5824094ejh.385.1592612150567; Fri, 19 Jun 2020 17:15:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592612150; cv=none; d=google.com; s=arc-20160816; b=uRVmmn53TJVRABf4L/x5X2YbLokkAh2/uAxEgQzKtQX/6RZ7BvXFpNRiSxJTv9w6+R zLknkdoe0Dt/7oma3IwLFzbqedTHPP4U38vn2jB2n87qdmPBTNfzLeHRpW3VEbzRlE/1 a5q0rdRTrxgXWX83SFmLX3G4njFPspX8CkJc1RmWVYNHfwqOEQ6ekuw+PztlsOMOdtoK aDLPljQgfmcqE1FCqrkSUJUGuJw03L+uedgh6plHVj6gyBhUQofV1x2NTBgZgDOZtGcz EBYlzKgL+IXAM2zMmQBtpv8S1lPZwTBGkVA2/naKRtOTcS1KBrM3IxZKBhuLNipQcGTS hsxg== 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=hQQVyop4EeM/SL7bm+v9xIScwa3xRw/BqGpqYIOzEbE=; b=esSfWZbeo4PdVuNsxNPIoJ+medYs2xHBFUd1/P8MDvnibHeqvtWpryDeX2X4VDEiy3 MHflRZNCisLf8gP9M7iYlos6yeC2qaV+hQZeUFMZVYNlelNCAMBLcNh5KNrSN5PzFsNU o/LGTdNqUtepZy2AXF6OHttz9DU+NqkkUTvklrEFH16hPkQxZnTaLdD5Q/MwQtZ86QUc IqZ3GfVbjR1C7co9aCaXCG2CjVwjYMo7GFtyawZoLMiFTjmgYRmLldCggiVeHBC/XuDJ kRK67aw8P/u911HpQMymqIu4uc+Yr+jOAAeh9YqGT3H9PAMzMCM6jP6k2LyaAUDJoO9L p12g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fDccz0CF; 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 dr4si6548137ejc.239.2020.06.19.17.15.28; Fri, 19 Jun 2020 17:15:50 -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=fDccz0CF; 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 S2404928AbgFSPeI (ORCPT + 99 others); Fri, 19 Jun 2020 11:34:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:36968 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404675AbgFSPc5 (ORCPT ); Fri, 19 Jun 2020 11:32:57 -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 1F6F121973; Fri, 19 Jun 2020 15:32:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592580776; bh=bAf65E3ga0SJKOAJCczAPgrFCM/j3BGNsKF5UllZPlw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fDccz0CFVYiflYSPlF2lfrea9LrsuEIR+PfIaHKjyGGPQzyedZfk9ji9P82/V3rpj a73v81ePMpMzhlmH3JtuZv1O6y0V44Z97U3eN+R4eI7Ajrq9A2mqIlnwAnFWgv0ya/ awvhQMB6m8n4+xbmJeKSpl3BE+LMViPkX0uI79Jk= 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 Subject: [PATCH 5.7 348/376] block: nr_sects_write(): Disable preemption on seqcount write Date: Fri, 19 Jun 2020 16:34:26 +0200 Message-Id: <20200619141726.799900818@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141710.350494719@linuxfoundation.org> References: <20200619141710.350494719@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 commit 15b81ce5abdc4b502aa31dff2d415b79d2349d2f upstream. 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: Greg Kroah-Hartman --- block/blk.h | 2 ++ 1 file changed, 2 insertions(+) --- a/block/blk.h +++ b/block/blk.h @@ -470,9 +470,11 @@ static inline sector_t part_nr_sects_rea static inline void part_nr_sects_write(struct hd_struct *part, sector_t size) { #if BITS_PER_LONG==32 && 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_PREEMPTION) preempt_disable(); part->nr_sects = size;