Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp23447imu; Thu, 3 Jan 2019 13:14:00 -0800 (PST) X-Google-Smtp-Source: AFSGD/U1wPhTlRtjA5MJgMHE+hD181gJlnjgIoZKNexiT1zZAKiHcRb9SBQa9nJ0x3cDzfgLxk3G X-Received: by 2002:a62:da5a:: with SMTP id w26mr49807493pfl.106.1546550040633; Thu, 03 Jan 2019 13:14:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546550040; cv=none; d=google.com; s=arc-20160816; b=AUyPmIM7srMYokURbgCk4QjZp4CFlgWF3qIiyV1TV3j2Ho9QueUbt/ksMQ1KsU2EZm PppRbPjXuNJYkBIl58rgsECyw+AjdwtRn5oabCuK3f6/VHfHwEYvQOr0+R/awxz6R5MM gLJWY6oowmOJjwZ/ArWkfFO9TbUXDI9uTR1hTKKTKQv/dI43Vk4ejs1MDv3D66d9QSau o3ghd3q6oi8zSeMSVGj8mAjWscBJCCZO2wkG1SQIMLSVSmbc1DbQS3IBCT+CLxzR4/KF HDxeK+zaLTWWbnxCgwmHnVdEr65OQOGO8PQcZ+27cL9GP0ygRtOX84O9PpuTCS+D9MvE dQZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:from; bh=wGtR2ik/mI1CXvdpdpswYWpXFxruI/APNttQyVvP3d8=; b=uztsBJ4SrTGpYdpW0jW721/w/YMIXk0As9BvuRF82+kxiRiHQa5qsSeYIcwftR8ZDU kkSXDqHsjH6mA2v11ijNFTKA1ccxHT8GV52fdE8mZKUJWd9euZE8uNXNyfvY+nSBqVds NBrti7igBLqiAiRMg/qsbbPt0Ykd6K+HBBrzIYyJGbH2qWOVLvT7KkGs7NPituwEes2c F4CtQQ2tNLz0uPcYG+x/PrDyfAnGJoT+bBhFuHmddFl5MqF5qwiMm/15XoLH5fkGg/YU rKMIGJR5id9Lx6jBHT6tiJBf74C5Z9ZfyisZUGMP3G5svPPjhSoW6Df9yn4dRDKVmdeI io+A== 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 f18si31691715pgl.457.2019.01.03.13.13.36; Thu, 03 Jan 2019 13:14:00 -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 S1731975AbfACPA3 (ORCPT + 99 others); Thu, 3 Jan 2019 10:00:29 -0500 Received: from mx2.suse.de ([195.135.220.15]:32846 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730737AbfACPAT (ORCPT ); Thu, 3 Jan 2019 10:00:19 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id B7A05ADBD; Thu, 3 Jan 2019 15:00:17 +0000 (UTC) From: Roman Penyaev Cc: Roman Penyaev , Andrew Morton , Michal Hocko , Andrey Ryabinin , Joe Perches , "Luis R. Rodriguez" , linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH 1/3] mm/vmalloc: fix size check for remap_vmalloc_range_partial() Date: Thu, 3 Jan 2019 15:59:52 +0100 Message-Id: <20190103145954.16942-2-rpenyaev@suse.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190103145954.16942-1-rpenyaev@suse.de> References: <20190103145954.16942-1-rpenyaev@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org area->size can include adjacent guard page but get_vm_area_size() returns actual size of the area. This fixes possible kernel crash when userspace tries to map area on 1 page bigger: size check passes but the following vmalloc_to_page() returns NULL on last guard (non-existing) page. Signed-off-by: Roman Penyaev Cc: Andrew Morton Cc: Michal Hocko Cc: Andrey Ryabinin Cc: Joe Perches Cc: "Luis R. Rodriguez" Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org --- mm/vmalloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 871e41c55e23..2cd24186ba84 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2248,7 +2248,7 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, if (!(area->flags & VM_USERMAP)) return -EINVAL; - if (kaddr + size > area->addr + area->size) + if (kaddr + size > area->addr + get_vm_area_size(area)) return -EINVAL; do { -- 2.19.1