Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp364786pxx; Wed, 28 Oct 2020 06:48:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOLenpKtynB0lKyWDpenylDNlzCB8W0POKczIFUPiTSmqQaZ8AJHRl+sOP1+7psC8oEDZ/ X-Received: by 2002:a50:d805:: with SMTP id o5mr7894215edj.142.1603892890586; Wed, 28 Oct 2020 06:48:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603892890; cv=none; d=google.com; s=arc-20160816; b=XTYti5EyGNjvTP4wf8WtOHgFX+GXW2IY1tTlPzLDhB1NgpORaGGiXEO6pfY3oRThg8 3CsLmxoHCW3PhWiWSvCW/S9l4gJYJFaHZKf51cNT8RhB9Gt7N7u8i4D/B5jJn6QtfANQ KKl7CjAkuWJSZuVFDOblYt3LuMNQgtA3japSPzBeFzgYuXdtJOSwDVviwPNTu8YbCZJ1 JPd7Epq+w3K3bLYCd23w14WtyBFz0qW+bfUqB7wWk2c88qOnvYQ+l2CR/pwiRu0Uwb2q 3sNY8P/mYPtfujbKC1e6Oa1sVzjYqxmhxCxw8KaOF4MJQmwOKyRZfm7NW4yAGXeguthp ptpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=UeppBRz73YEZ4cI3F0azWccbk8FUcRLoXvXzh9ukuw8=; b=pcBNgL4WQmR38+/7F0dAgnSYjHZXTObJasN02ScRHH5EoKndGrZvu2/Un0NL9O8Vmx 0jZ3BOJseJHbbbcMWeOjq22LImbuBNxrDg767vASoiY2cbhed+9y23en28p+A1bqmHLb YqoUor99mwg0MRQ8CsIrg/1PfLro29yQLcU9JxxIK0YEi+AHwgNC6W7jKY/v2CgSFifI f0f5L6kCKAhKg1GPz5eOGlnV3hmD9gB+CLMGoIi1gyfQVd1mGglXvzcYoB81/T7sytSe i4DJvBiZ56hZ4ncdN/Y1/bfQgdQSB6/V1REHxZXFaVJF2HtXpXPIzk+zi13ePypms6rY /e2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=EhvypwDA; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d4si2698178edr.173.2020.10.28.06.47.48; Wed, 28 Oct 2020 06:48:10 -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=EhvypwDA; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1803097AbgJ0PwJ (ORCPT + 99 others); Tue, 27 Oct 2020 11:52:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:57348 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1801058AbgJ0PiJ (ORCPT ); Tue, 27 Oct 2020 11:38:09 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 789B8204EF; Tue, 27 Oct 2020 15:38:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603813089; bh=IepNL/6w26mtfdmFZln8iBNbdDfa6Q3qRgHbEMij0UU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EhvypwDABY9miuGIVqAv/yt1wcpeUAilMmfikcT8kIM4klmutjVkjtTgvjo9vBBsX jrME6wtcr2ifB3Gz0PrD+wfYu9G//9aSHOEEGxE6MgD/85TpPjDJJqNKXhv0cDgog5 9+fU/Yv2mTiKshD8FIKOhY4TiZUVIbUeFIhm0aa0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Leon Romanovsky , Shiraz Saleem , Jason Gunthorpe , Sasha Levin Subject: [PATCH 5.9 433/757] RDMA/umem: Prevent small pages from being returned by ib_umem_find_best_pgsz() Date: Tue, 27 Oct 2020 14:51:23 +0100 Message-Id: <20201027135510.866036504@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135450.497324313@linuxfoundation.org> References: <20201027135450.497324313@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jason Gunthorpe [ Upstream commit 10c75ccb54e4fe548cb16d7ed426d7d709e6ae76 ] rdma_for_each_block() makes assumptions about how the SGL is constructed that don't work if the block size is below the page size used to to build the SGL. The rules for umem SGL construction require that the SG's all be PAGE_SIZE aligned and we don't encode the actual byte offset of the VA range inside the SGL using offset and length. So rdma_for_each_block() has no idea where the actual starting/ending point is to compute the first/last block boundary if the starting address should be within a SGL. Fixing the SGL construction turns out to be really hard, and will be the subject of other patches. For now block smaller pages. Fixes: 4a35339958f1 ("RDMA/umem: Add API to find best driver supported page size in an MR") Link: https://lore.kernel.org/r/2-v2-270386b7e60b+28f4-umem_1_jgg@nvidia.com Reviewed-by: Leon Romanovsky Reviewed-by: Shiraz Saleem Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/core/umem.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c index 09539dd764ec0..1d0599997d0fb 100644 --- a/drivers/infiniband/core/umem.c +++ b/drivers/infiniband/core/umem.c @@ -151,6 +151,12 @@ unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem, dma_addr_t mask; int i; + /* rdma_for_each_block() has a bug if the page size is smaller than the + * page size used to build the umem. For now prevent smaller page sizes + * from being returned. + */ + pgsz_bitmap &= GENMASK(BITS_PER_LONG - 1, PAGE_SHIFT); + /* At minimum, drivers must support PAGE_SIZE or smaller */ if (WARN_ON(!(pgsz_bitmap & GENMASK(PAGE_SHIFT, 0)))) return 0; -- 2.25.1