Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3037791ybt; Mon, 29 Jun 2020 13:35:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxxfXQbB+GtfCvhGCR4I1JVCZ1PELsa1pMF3dVpRMUJyMzUm/MYnL9S91oF8bxn7DXJYlXR X-Received: by 2002:a17:906:7c54:: with SMTP id g20mr15914022ejp.460.1593462919318; Mon, 29 Jun 2020 13:35:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593462919; cv=none; d=google.com; s=arc-20160816; b=S5IsEBZ5E6vqi/MuUU2t2aRP4njF0j4LmMOpp0QwAplYoN/AtAVGW4bvap/a8q+oYc sR2dMyjRGk7Te5F9fhsx6F1j08gMQHDB5toF5t925/dUytu+X90UrZV/HqE5fmEPMUtX jVgTJfyw8+IB9O6Dy6uMmqwu/nUKO1EMoB0G3XeGrFQbADpFzQbF3FlWTPe01c3jTHcF q5ie3GAVw84lCwDPQcUYrmgMf7Bs48xV0w9D7QOc97yC/1hZR2AVWqsdFWh5rfG9PlMi nrHVYljWYwOznb1TS5b0/hbru6SAzDb1t5uPWJmmPofjEMbDOCjWJVXTpOAF3COLZaFz ck4g== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xi5EKTu864fl3cBQEed6qsJyoS36e2COxGaeSCblf3g=; b=bQKCY5HPDK0SQ693DET8F857tHiDlU/cjm+RZ4NpFcpuPSnRO5t6+GUVn8S1bG8/RP HygxAs7j6dgU4W8L7R2SHWUC2oh1pr2HFhVJSggV51UU5JJJT+fNy8HR1veIBBZ3qa9e DV7qDIiN4LC99MtTLQoSYLIJUfohZbFf4kWdxrrWMqSE4r1jBUFvxdOaKLzRcejtggL9 9CM8FSKjYwXpoGyK/9IxbLSOMjfTNfhrVmIbn6mpkCSQpwYNbE3Q4nVVw2MTkgCdVYVI GBARKptiTQV4BPhnJ3R7E0rQWPntJFcxCJIPsWI+VM2iuZfZi0Eo7XgfiuwQl0xeZMYp ZpyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=InCLuMkS; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c89si361523edf.35.2020.06.29.13.34.56; Mon, 29 Jun 2020 13:35:19 -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=InCLuMkS; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389356AbgF2Uds (ORCPT + 99 others); Mon, 29 Jun 2020 16:33:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:37020 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732287AbgF2TZQ (ORCPT ); Mon, 29 Jun 2020 15:25:16 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 99374253E6; Mon, 29 Jun 2020 15:42:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593445321; bh=OrBffg6MOPJ0XQvccgzc1W1J1qM2pJOx0+JhQ9alzSo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=InCLuMkSWZfvrcn0ON+B7NyMP/ULDW/lujMDtXCt6SdFpLm3BCgJEmMoyeJmEancq rl3Wc44eRVRq+lmA53GtgfD0c5gN/ZEmZq5B1c8NP2yhUKO3CM/Hpj7VrGybFici6d QdCDEyohiSUnLuZ8E0MQsUQjwbOETleTVTjOGPzA= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: "Ahmed S. Darwish" , Sebastian Andrzej Siewior , Jens Axboe , Sasha Levin Subject: [PATCH 4.9 088/191] block: nr_sects_write(): Disable preemption on seqcount write Date: Mon, 29 Jun 2020 11:38:24 -0400 Message-Id: <20200629154007.2495120-89-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629154007.2495120-1-sashal@kernel.org> References: <20200629154007.2495120-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.9.229-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.9.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.9.229-rc1 X-KernelTest-Deadline: 2020-07-01T15:39+00:00 X-stable: review X-Patchwork-Hint: Ignore 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 3c99fb6727cac..12a2f5ac51c97 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -716,9 +716,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