Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3318876imu; Sun, 11 Nov 2018 12:15:56 -0800 (PST) X-Google-Smtp-Source: AJdET5fgPP9FZzVOWFWpvTosj/IrN+DssrfnInIjUTHy0IVmiMiyixt7y4mk8GDUR/lNhWvuRQgm X-Received: by 2002:a17:902:b689:: with SMTP id c9-v6mr11046409pls.306.1541967356680; Sun, 11 Nov 2018 12:15:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541967356; cv=none; d=google.com; s=arc-20160816; b=uJOwF24KqE9K0x+T/N1UILKGq1VKi2Aa4g6AxLVmRyVbmTOkwM23nPADDfwYNqVWpM UWilfsxvgmEpUkQej02ESXdwSL4L/UdM5qdn/gSwHSk9mw5Q4M9JB5A0nR61ERUekCaJ Hw2Qf3RJwq7VUrPFs0A5jufDExFmeBcvdmkEV/8t0ipw7ZY3Pt0ZPcWHAeCRduMFI5XQ 3moh2cMmUgS3jBnHlpd6OEU5YF8aVm+Vz1QSN1dLsBj5jq7ljIsi0RygIYrdeT+t4+hD h/8edEZVEX9eey9uW5U/6PPV4PM/C29w1XwtxnZ3Dte6/QL7vj6ywAu8YUSIQXqrF0EV pfNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=zYnXw8C4jtSKWeTNYFHVcCVR8CYg0aVgOtTWZ/6HX+0=; b=fejKEJNsu+aBOFfSv0OmFj9cPgYqAcaoSNXLbktIsHg1XmxIycocoaAntKIPTwDS0Z zBezdzKkRroNpd4LAOfy94gMBdST3DilyPCYlkWsyXAf2wYX1W4/SL8D7YXMIrF2LVOi dAFP8fvjpUpaQl6+GY8ZG4b65cBxY1VbbFwUTRCiwS8FMcpjVazgpJKwz+cOntdyeEX6 ONvAq+6kr9zVgDd5dIvfcLvD+U8a+I1kx5oXB2gcg6YabIsna6Swq0Ss3Sl3rL6XF/ut tx2tTy6dDcdprGDSr3K/aGAPPpQ5+SyhuQVsfhGcHRHZ8WhA8Cv1LXdH8M8SImPNnOt0 Hg+w== 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 e188-v6si11922830pfe.203.2018.11.11.12.15.41; Sun, 11 Nov 2018 12:15:56 -0800 (PST) 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 S1731468AbeKLGEu (ORCPT + 99 others); Mon, 12 Nov 2018 01:04:50 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:52982 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729602AbeKLGEu (ORCPT ); Mon, 12 Nov 2018 01:04:50 -0500 Received: from [192.168.4.242] (helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gLvsw-0000l5-EZ; Sun, 11 Nov 2018 19:59:06 +0000 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1gLvsU-0001dx-L0; Sun, 11 Nov 2018 19:58:38 +0000 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, "Jens Axboe" , "Jitendra Bhivare" , "Martin K. Petersen" , "Keith Busch" Date: Sun, 11 Nov 2018 19:49:05 +0000 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) Subject: [PATCH 3.16 203/366] block: Fix transfer when chunk sectors exceeds max In-Reply-To: X-SA-Exim-Connect-IP: 192.168.4.242 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.61-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Keith Busch commit 15bfd21fbc5d35834b9ea383dc458a1f0c9e3434 upstream. A device may have boundary restrictions where the number of sectors between boundaries exceeds its max transfer size. In this case, we need to cap the max size to the smaller of the two limits. Reported-by: Jitendra Bhivare Tested-by: Jitendra Bhivare Reviewed-by: Martin K. Petersen Signed-off-by: Keith Busch Signed-off-by: Jens Axboe Signed-off-by: Ben Hutchings --- include/linux/blkdev.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -929,8 +929,8 @@ static inline unsigned int blk_max_size_ if (!q->limits.chunk_sectors) return q->limits.max_sectors; - return q->limits.chunk_sectors - - (offset & (q->limits.chunk_sectors - 1)); + return min(q->limits.max_sectors, (unsigned int)(q->limits.chunk_sectors - + (offset & (q->limits.chunk_sectors - 1)))); } static inline unsigned int blk_rq_get_max_sectors(struct request *rq)