Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp3692142ybv; Mon, 10 Feb 2020 04:48:38 -0800 (PST) X-Google-Smtp-Source: APXvYqzHRqCKmAn8U/mIWhclsYO4nc9zWZ1YW8Lbf2tzdEj9YFxOstbWiZLZ26mJ/soaXKI+ZSkg X-Received: by 2002:a05:6830:22cd:: with SMTP id q13mr959729otc.224.1581338918101; Mon, 10 Feb 2020 04:48:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581338918; cv=none; d=google.com; s=arc-20160816; b=e1l2PsfH99dlpaVVJc1dvu0NV4yQpBlv91WWveXq/Vrb3Lio0u8gL2FHgJIp+CXdDX X9FwE28o8FOhOhSAbCSIYG6mDYZrqOAYlTe8bIp26uVggsTtNw2JGmsZzstBcVS94Khu BaYC/ZdycihPE36L5KyPT6/eS6pLfL8AEvhH7/IAaZrCLTvYTLVtkiWaPc0GIwHc8b88 LkwS7jrHBKQOpvPfFAyiC8/b6qqyRNL0ROEI783Qo+M4IDPJIifWv485P4xkcvXF7tKd +WCQbo1sLkynY4+wQ2S9XkcmPRWJl+btFjKpNAjeyeJ46759uc9X2oE2AR0pjRK2vE9C ny5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=PnGLn1ThL6tpQ7E8oUlTkMwIyYGsCjFyvI7vHAWoucY=; b=jg90u2aviej565p2aCnItIWWeAh3b43j5aLZ1fIAr9S8SDJIOF1W61ArxA1c/eyqwD UAOFaR1/irsfZCBCBoWEcfVKJanx1n0rWp3RHzsckvblKaHtQ0Wta6G26iD03m6UURWI E+YBRQjbfQ8vkxjd1kkbR8TrevJgpSKqpBCP0uaCCMuNLBuvVBKlEYvt0MP+8fKGf7dJ ZimyC4BefuIiUYLBn7mx2tm0kuuW97T1v3YjMK7YGwg1FzXtCCv+w1Fngdj2eU1Lji6T jwj2Uz0f0kmNSu308LsNx8Pxrg32GnXVfzk/tZ2tkrSPyfRYndu0ET8w+UPGgpRNsjLA kSEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MhEMjkcc; 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 r82si119777oie.116.2020.02.10.04.48.26; Mon, 10 Feb 2020 04:48:38 -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; dkim=pass header.i=@kernel.org header.s=default header.b=MhEMjkcc; 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 S1728454AbgBJMrU (ORCPT + 99 others); Mon, 10 Feb 2020 07:47:20 -0500 Received: from mail.kernel.org ([198.145.29.99]:45892 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730160AbgBJMmJ (ORCPT ); Mon, 10 Feb 2020 07:42:09 -0500 Received: from localhost (unknown [209.37.97.194]) (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 77B792080C; Mon, 10 Feb 2020 12:42:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581338528; bh=uCyrfZUCwpTF120RqOYcg97Mo35fTmL0s0uI/RvymD8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MhEMjkccR/HV+GTB1MuAQD/N5j/Dut8ETAPVLFEHVaYkG6LCc8rorYsqnjsiYoSYg 0ytDqWTdatA8Oxu1LOM6BUZljI18rGdQJ3PUiysqq2SuyYdIVW/FsPVHxVkDzxwZ4M 1of5lMzlv8UhGejXHPXsC7VBrE54EJHcrtMbvqtE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexander Shishkin , Song Liu , "Peter Zijlstra (Intel)" , Ingo Molnar Subject: [PATCH 5.5 351/367] perf/core: Fix mlock accounting in perf_mmap() Date: Mon, 10 Feb 2020 04:34:24 -0800 Message-Id: <20200210122454.918673234@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200210122423.695146547@linuxfoundation.org> References: <20200210122423.695146547@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Song Liu commit 003461559ef7a9bd0239bae35a22ad8924d6e9ad upstream. Decreasing sysctl_perf_event_mlock between two consecutive perf_mmap()s of a perf ring buffer may lead to an integer underflow in locked memory accounting. This may lead to the undesired behaviors, such as failures in BPF map creation. Address this by adjusting the accounting logic to take into account the possibility that the amount of already locked memory may exceed the current limit. Fixes: c4b75479741c ("perf/core: Make the mlock accounting simple again") Suggested-by: Alexander Shishkin Signed-off-by: Song Liu Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar Cc: Acked-by: Alexander Shishkin Link: https://lkml.kernel.org/r/20200123181146.2238074-1-songliubraving@fb.com Signed-off-by: Greg Kroah-Hartman --- kernel/events/core.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -5916,7 +5916,15 @@ accounting: */ user_lock_limit *= num_online_cpus(); - user_locked = atomic_long_read(&user->locked_vm) + user_extra; + user_locked = atomic_long_read(&user->locked_vm); + + /* + * sysctl_perf_event_mlock may have changed, so that + * user->locked_vm > user_lock_limit + */ + if (user_locked > user_lock_limit) + user_locked = user_lock_limit; + user_locked += user_extra; if (user_locked > user_lock_limit) { /*