Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3643294imm; Mon, 18 Jun 2018 01:25:38 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKCDJ9Nb/MIVM696eetFi6hnIYxtxDcUw+HRt27Jy9GAXDulYyIg7Jtq5iTPvLaApAnZnpp X-Received: by 2002:a63:bc0a:: with SMTP id q10-v6mr10125459pge.70.1529310338879; Mon, 18 Jun 2018 01:25:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529310338; cv=none; d=google.com; s=arc-20160816; b=lYGaUQuY1eTRooZzpKXjjzn3FoTROUeX45qyrWIYGgL9yg4tSEjNqprsmv5cbVyJ+q kwL5vBIs8hWMBqJ7jMYbHhIZLHbmOjQUOmRAoUIUEk5b9ciU3cNh4hw/ZzPi2K3hLsRM /+FibB32MN6lhCRGI4YFvIq7dYwTYTOGZcFIINy8eeErVC7tIl/e19Olyz6gczsmN4kW z8ZHGlN8UuBgA+0GaqqCjSGlVe99sdaki8aHx7LWAt23gZ2LNDYDDJMwAJPJiTjPe07J 3GRsMNsreDgMyF7DWFKehw+EFVtrtn5QH5ykFV8wW+iWnI2Fc7OPUcDYe6G2BDY8ZaSs H5+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=DUYh50Mwk2UlfpEL7ReujOdr46Fby3EAl7mFKDjOZ48=; b=GI+p9aqR2+tEwmxDnUUfaq1+bHYP6uJf/n+0GU+pzpQVev7bG5V9n0PR0GDZyNKPyI p3Nygc9TzHAUWRUhyvrxIdxHFmfn1mf13dAFSMFIb7XTADrX26hMiGEhRzTGarMSMp3R C1Kj+OZ59RGCbwuQ2h442uT2Vzzicvewj0Y0VkVUlgeX4U9jcBJHRvEUZiFxGbhJS5lN y4/DH70u1+xemwsZDqaxLilvrONIIWCCiFANDzzJX1QUagmZuuMCMmVjgvuW4CjYKtlG hGm1N0Kq7p3b2RZRW19QIUftAbM426P7QBuFMmpcWUqF5qbCnZZTIo06w6GJWtgSJQAI pIrw== 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 z10-v6si9956798pgv.1.2018.06.18.01.25.25; Mon, 18 Jun 2018 01:25:38 -0700 (PDT) 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 S935984AbeFRIX5 (ORCPT + 99 others); Mon, 18 Jun 2018 04:23:57 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:55908 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935974AbeFRIXz (ORCPT ); Mon, 18 Jun 2018 04:23:55 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 145DFC5C; Mon, 18 Jun 2018 08:23:54 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexandre Jutras , Etienne Carriere , Jens Wiklander , Sasha Levin Subject: [PATCH 4.16 187/279] tee: check shm references are consistent in offset/size Date: Mon, 18 Jun 2018 10:12:52 +0200 Message-Id: <20180618080616.671268671@linuxfoundation.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618080608.851973560@linuxfoundation.org> References: <20180618080608.851973560@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: Etienne Carriere [ Upstream commit ab9d3db5b320a052452b9cd035599ee3c84bbee9 ] This change prevents userland from referencing TEE shared memory outside the area initially allocated by its owner. Prior this change an application could not reference or access memory it did not own but it could reference memory not explicitly allocated by owner but still allocated to the owner due to the memory allocation granule. Reported-by: Alexandre Jutras Signed-off-by: Etienne Carriere Signed-off-by: Jens Wiklander Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/tee/tee_core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -238,6 +238,17 @@ static int params_from_user(struct tee_c if (IS_ERR(shm)) return PTR_ERR(shm); + /* + * Ensure offset + size does not overflow offset + * and does not overflow the size of the referred + * shared memory object. + */ + if ((ip.a + ip.b) < ip.a || + (ip.a + ip.b) > shm->size) { + tee_shm_put(shm); + return -EINVAL; + } + params[n].u.memref.shm_offs = ip.a; params[n].u.memref.size = ip.b; params[n].u.memref.shm = shm;