Received: by 2002:ac0:b08d:0:0:0:0:0 with SMTP id l13csp1807203imc; Fri, 22 Feb 2019 11:32:49 -0800 (PST) X-Google-Smtp-Source: AHgI3IaJn6OCL8jnTStOysYu2pXd+NBrXDRiQR8l+DQN713+/wuVx3uXrBDrsswxuvrQoGBMLxGO X-Received: by 2002:a62:bd09:: with SMTP id a9mr5733888pff.24.1550863969833; Fri, 22 Feb 2019 11:32:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550863969; cv=none; d=google.com; s=arc-20160816; b=Z/v/e/TSRx/hIQnHRULYBFbPSEbjSr+Igcc9fpXU96V+QrDxAMQgAtOz7f90vw0XOD 5cXDv5huy0xOrL4Lizff7TalyxFJZuR7KhSXZ6cjMr19PkNMlia6iB828tdyirBN3Gy6 8VtgALH1f8/GO13eIkVX2d7F6qPyGrTdFbjrOEHRLJEjih8jvvNE8Hu1oNNZr8riDs85 OBIMXRAEoMO4X9LFeiE5/2XnbRqL9/knJjESi5G0cRXzEwqKZAr65zgJyf0JcHdIWrE4 CeU4g+775z63O6Pa0RsI8DCoFL0TQwiV+iXQMMMRqcxQeSoE/b5oJG/LocAJufzBmLvO dVYQ== 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 :references:in-reply-to:message-id:subject:cc:to:from:date; bh=rM1yNn8c1wjZeJRbpifWHIdf4IwMNcutZIQgqQmpH0U=; b=LrUoSRYD91yN/JiR3dbzEsyZUNpfO3UM/YTKVteQKfHimHHztp/G5zpp/f+SV/azVZ lSp5vshAgmve5DpGlT/SsmVa/r/XpEs4c4mL1AfmvRUi8tHFr1Udf2GdXw5G9Yr11K6O 3xjl/QE4S89e7NgFv2nloLTu0ZZjwJco8YkfiPC5aWC4GfZBuhHrCk8PJfswmDAemvEu fAlMy5pVL8cqi0j9bBK7nlBxPOMmsz3aQ2Md4ucZ65gHgUCtf5UrPaAoqBIrCxgDiTF6 jNKXwr3YLDqK97l6TcGRbuvuKJlgidYdCN8WNLqUD8MrOjAlLaDRMg1UiSLL22sXMDco pAhg== 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 u8si2074566plh.385.2019.02.22.11.32.34; Fri, 22 Feb 2019 11:32:49 -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 S1726776AbfBVTaa (ORCPT + 99 others); Fri, 22 Feb 2019 14:30:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:59470 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726441AbfBVTa3 (ORCPT ); Fri, 22 Feb 2019 14:30:29 -0500 Received: from gandalf.local.home (cpe-66-24-58-225.stny.res.rr.com [66.24.58.225]) (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 7A49F206C0; Fri, 22 Feb 2019 19:30:27 +0000 (UTC) Date: Fri, 22 Feb 2019 14:30:26 -0500 From: Steven Rostedt To: Alexei Starovoitov Cc: Linus Torvalds , Masami Hiramatsu , Andy Lutomirski , Linux List Kernel Mailing , Ingo Molnar , Andrew Morton , stable , Changbin Du , Jann Horn , Kees Cook , Andy Lutomirski , daniel@iogearbox.net, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH 1/2 v2] kprobe: Do not use uaccess functions to access kernel memory that can fault Message-ID: <20190222143026.17d6f0f6@gandalf.local.home> In-Reply-To: <20190222192703.epvgxghwybte7gxs@ast-mbp.dhcp.thefacebook.com> References: <20190219111802.1d6dbaa3@gandalf.local.home> <20190219140330.5dd9e876@gandalf.local.home> <20190220171019.5e81a4946b56982f324f7c45@kernel.org> <20190220094926.0ab575b3@gandalf.local.home> <20190222172745.2c7205d62003c0a858e33278@kernel.org> <20190222173509.88489b7c5d1bf0e2ec2382ee@kernel.org> <20190222192703.epvgxghwybte7gxs@ast-mbp.dhcp.thefacebook.com> X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 22 Feb 2019 11:27:05 -0800 Alexei Starovoitov wrote: > On Fri, Feb 22, 2019 at 09:43:14AM -0800, Linus Torvalds wrote: > > > > Then we should still probably fix up "__probe_kernel_read()" to not > > allow user accesses. The easiest way to do that is actually likely to > > use the "unsafe_get_user()" functions *without* doing a > > uaccess_begin(), which will mean that modern CPU's will simply fault > > on a kernel access to user space. > > On bpf side the bpf_probe_read() helper just calls probe_kernel_read() > and users pass both user and kernel addresses into it and expect > that the helper will actually try to read from that address. > > If __probe_kernel_read will suddenly start failing on all user addresses > it will break the expectations. > How do we solve it in bpf_probe_read? > Call probe_kernel_read and if that fails call unsafe_get_user byte-by-byte > in the loop? > That's doable, but people already complain that bpf_probe_read() is slow > and shows up in their perf report. We're changing kprobes to add a specific flag to say that we want to differentiate between kernel or user reads. Can this be done with bpf_probe_read()? If it's showing up in perf report, I doubt a single check is going to cause an issue. In fact, it may actually help speed things up as the read will be optimized for either user or kernel address reading. -- Steve