Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2444559imm; Mon, 28 May 2018 08:12:16 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqIKDshmjvlbQc4sLZ+qIowZJUdx+gNuRF4NamjVP4Y0H6O93MMXa9pf6/DvoMT5Iy7luz1 X-Received: by 2002:a65:5c09:: with SMTP id u9-v6mr10959992pgr.304.1527520336627; Mon, 28 May 2018 08:12:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527520336; cv=none; d=google.com; s=arc-20160816; b=O/RYFOIU8wjc49UJbm/tdiJbQFJJs1H+4NcaSgJR36sKvFmz33Lu2GxsIH98Sp5Eh8 kZSQrOT3f4L5D8bWaIrQoRilQMApT9Dsn9agSCVRdbTXIhVBraGEqwRzFFoV8aWCpEkR Pw/nYVhI05mI3X5uQ/2rALWNRTNpoksk8qQXFflTtAvTTorJy85w5EqMApertctGqY3Y nCGc+Q7hkNQb10QwAzHTFDEbAKqPMYjWltzPmPQ/pomfgWCYsAI1hfZzhU7YMnKc03TW VtBfkC3qj9xXHkbd6zz5VYu0iIG+Ivrn+MhPDGTtiTH3M3CXn4Hdo/Rz09+WUltlGYJE 3p9w== 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:dkim-signature :arc-authentication-results; bh=gr5SkkwKRaYlGmvXYJi1dOwp6EBd+TaEq47F1JqCGwA=; b=OYAhIDRM0lq7fB+9e2E69sRjLx/5lMOvL4llpZ9EXIIdWvtTyReWSbWv/FeP4P92Jf jgayGT/EvER+UfjGwzenRI4ViOhteWttD+Cb68uAiduJffRkj3AH6ASZ66YZ7OrqPKX/ khiRn+EWLGp9UHJ49GFln/ZsQReW8AqtROpruggCNDsoYP6ka/NjyHFi87nMjctaMUW2 Qa9qoT56waZrAud4wnGPhmiiE6jVxIE7vnUdkfG5GOY6ph7pxMCb7C7b23pCQ0ApFWth FayKlE0AO+TZ3tkg0GfqE52a8qtiGZPw2XaeIdbQpufAvtT1tZCLO0LQyJs0Ihtq+1c9 4vaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=KUAC7PPk; 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 p1-v6si30695109plb.204.2018.05.28.08.12.02; Mon, 28 May 2018 08:12:16 -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; dkim=pass header.i=@kernel.org header.s=default header.b=KUAC7PPk; 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 S1166019AbeE1PK1 (ORCPT + 99 others); Mon, 28 May 2018 11:10:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:43336 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1033325AbeE1KYA (ORCPT ); Mon, 28 May 2018 06:24:00 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (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 EF37E208A1; Mon, 28 May 2018 10:23:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527503039; bh=r2wqW7cO42YvbNqOxwsnIB02SbQPu5Ruvig8LBJZM9g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KUAC7PPk3D1Qqm1MScEZSIyBzhQB90fvzyl8rXz9dJ7IKOFh5z+Npbev9ovjgjesb vh6JoHA5bifwDsB0rub9ajzsrhOR1Ejyat4sZZLFGwyCVarzothg5DCUdxW/BekO8+ WP0lRO9TT8GF/bumTzvN8drmMGSR8qH6RCrmdqtE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Balbir Singh , Madhavan Srinivasan , Michael Ellerman , Sasha Levin Subject: [PATCH 4.4 190/268] powerpc/perf: Prevent kernel address leak to userspace via BHRB buffer Date: Mon, 28 May 2018 12:02:44 +0200 Message-Id: <20180528100223.874733909@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100202.045206534@linuxfoundation.org> References: <20180528100202.045206534@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.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Madhavan Srinivasan [ Upstream commit bb19af816025d495376bd76bf6fbcf4244f9a06d ] The current Branch History Rolling Buffer (BHRB) code does not check for any privilege levels before updating the data from BHRB. This could leak kernel addresses to userspace even when profiling only with userspace privileges. Add proper checks to prevent it. Acked-by: Balbir Singh Signed-off-by: Madhavan Srinivasan Signed-off-by: Michael Ellerman Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/perf/core-book3s.c | 10 ++++++++++ 1 file changed, 10 insertions(+) --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -448,6 +448,16 @@ static void power_pmu_bhrb_read(struct c /* invalid entry */ continue; + /* + * BHRB rolling buffer could very much contain the kernel + * addresses at this point. Check the privileges before + * exporting it to userspace (avoid exposure of regions + * where we could have speculative execution) + */ + if (perf_paranoid_kernel() && !capable(CAP_SYS_ADMIN) && + is_kernel_addr(addr)) + continue; + /* Branches are read most recent first (ie. mfbhrb 0 is * the most recent branch). * There are two types of valid entries: