Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp407585pxy; Wed, 5 May 2021 05:18:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxRSqg7EP0qcvNodsJM9mNnv7GagNyzPFqG8i8uogkMkM/qzBgJITT3RyuOY26FOXlsqvEf X-Received: by 2002:a50:82e2:: with SMTP id 89mr31770700edg.0.1620217106684; Wed, 05 May 2021 05:18:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620217106; cv=none; d=google.com; s=arc-20160816; b=It+Q1z3sUEB3NUz8nNF6j/agm8e1qc69SZxne2lg/WDHQ4xv4F9GKM6GRBpleQoAbQ KMDhaND8PJ0Gq6H70sQoDBouEAQ9KuOwoCqL7ANfIKKj1R2CyAGV2f6tiCj/VYB0kSgg smY5Ko+UDrgCit0p3Vo0nnmNhNbA59XdaY+0re/SWr+bL7VpcwpHqmtrWHDxugjyuLLw /gOtEfoVtbu8ZSsy8RDO+vhutENmc+t7M/y1aMg+gqq9vdj4Xl5D2BHBNy7FBZ3ZUxJF Zlk5t0yrDPob7DI/PgAPqNUZtDQrdCsB7CGBRrCZQrxkJ5X3v55hbO0ruEnhS8XdCkqz V0ZQ== 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=c6cihoukLnojuqK66FQ5Im0EAZAdj11UuvNtPEjrVKY=; b=K9J0OzusWsuu5Fpn4miNFxZxaxbTGzvHmCJiGJUeYX0HEn/d+rKZaHvvMlm7HIVNFf cdybVVs8X1P/VPBTm0VxrzMVOfIjK90HgwUrGvWap56DUF+ATqoBDqohFN1xy6BjrvtD xHengGn86D3KFJlPqo9tIOLinDiegK90fZctRvMK4KHLAk4XZXBrdkFdFzJ7UrXVQk1x RzINfcNutrLRepfcTuldH4fE3zAfWxSAZT6LqR/pRtjiImytkxL1T9tnFrwBBWCYSYZL ns+iIeubmFrHlzgfIOb3Vzi9GHexhhi/5u7LIlNZbmsNDnXOX6AQMeyQdgSTl6fgVO6I L+RQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=AV0zNNAp; 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=pass (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 ov4si5265795ejb.424.2021.05.05.05.18.03; Wed, 05 May 2021 05:18:26 -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=@linuxfoundation.org header.s=korg header.b=AV0zNNAp; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233941AbhEEMOZ (ORCPT + 99 others); Wed, 5 May 2021 08:14:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:49958 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232634AbhEEMKe (ORCPT ); Wed, 5 May 2021 08:10:34 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id DA713613FC; Wed, 5 May 2021 12:09:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620216564; bh=Q8hPrMVY17d+rHA4g4851tvn60S78AymKfwJtlzwMqw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AV0zNNAp4ufqH8dWmJ3M1XzSw5f9kCfhuEQkQygEo5GRkrOkAG2DrdOI8C7yJSa/p JrmnrKKTUrIKESVeVzBHeXzK6mjP/f8oja1MosOwAAlFcNHyAveB/NbkF1BjgZZrp3 WVqo7dS1xPI6HiF3DADpQ7Q5wdo/1qXP8RtWOpq0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ondrej Mosnacek , "Peter Zijlstra (Intel)" , Paul Moore Subject: [PATCH 5.11 31/31] perf/core: Fix unconditional security_locked_down() call Date: Wed, 5 May 2021 14:06:20 +0200 Message-Id: <20210505112327.693881809@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210505112326.672439569@linuxfoundation.org> References: <20210505112326.672439569@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: Ondrej Mosnacek commit 08ef1af4de5fe7de9c6d69f1e22e51b66e385d9b upstream. Currently, the lockdown state is queried unconditionally, even though its result is used only if the PERF_SAMPLE_REGS_INTR bit is set in attr.sample_type. While that doesn't matter in case of the Lockdown LSM, it causes trouble with the SELinux's lockdown hook implementation. SELinux implements the locked_down hook with a check whether the current task's type has the corresponding "lockdown" class permission ("integrity" or "confidentiality") allowed in the policy. This means that calling the hook when the access control decision would be ignored generates a bogus permission check and audit record. Fix this by checking sample_type first and only calling the hook when its result would be honored. Fixes: b0c8fdc7fdb7 ("lockdown: Lock down perf when in confidentiality mode") Signed-off-by: Ondrej Mosnacek Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Paul Moore Link: https://lkml.kernel.org/r/20210224215628.192519-1-omosnace@redhat.com Signed-off-by: Greg Kroah-Hartman --- kernel/events/core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -11817,12 +11817,12 @@ SYSCALL_DEFINE5(perf_event_open, return err; } - err = security_locked_down(LOCKDOWN_PERF); - if (err && (attr.sample_type & PERF_SAMPLE_REGS_INTR)) - /* REGS_INTR can leak data, lockdown must prevent this */ - return err; - - err = 0; + /* REGS_INTR can leak data, lockdown must prevent this */ + if (attr.sample_type & PERF_SAMPLE_REGS_INTR) { + err = security_locked_down(LOCKDOWN_PERF); + if (err) + return err; + } /* * In cgroup mode, the pid argument is used to pass the fd