Received: by 10.192.165.148 with SMTP id m20csp1250258imm; Fri, 27 Apr 2018 15:50:20 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoU5emy8eI9gBWEY/y1aHiYj7ar4q97LaKms8MJ6YgmXDa+vnpQZJMnmFmnDPXHC9cPkfqs X-Received: by 2002:a17:902:144:: with SMTP id 62-v6mr3896298plb.202.1524869420007; Fri, 27 Apr 2018 15:50:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524869419; cv=none; d=google.com; s=arc-20160816; b=G348roK1g043DdPxAbHVleb4tjJqpLO8BUd0PVHbpDVsUK+ngr2YAUEEH0utzSlf42 5FUTnywMspHf7stdWOqP1EOfbhrblBrPVq2LuQiYL/iS6UKYsPBt1VegWBY+SrSvotBk enmV8ZtlUDnNssxYQCEaU+BhoEME/6uASVHeNtzRibqNQSbNgK5zi5ja4FHA7x6U4Y/o vbMpzUhj6Gu1dyilEA4Un/XwOhhqRLTA3wiuTKMgZAmRncSnQ9mVUtbumLw0nAWQHigG dCel/K2c/oCQDcWYsw0HzLMeulafvd+yjA7NLUpEAirGK6T6w2NIPg76fPo2ZuajfiO3 vkRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:to :from:date:dkim-signature:arc-authentication-results; bh=V0OYwUhJw4wDnLF7eqQc7xmEtbXgpZizhcWvWj4W+M0=; b=uNug7AV7R8r4vR129nVnt0NnpSNYj4RMAPwyhM4imlO9S9B46lChmt/9gATRj2hD6J xN+Elc15SHCXDw7GpjVTcDGrQJSaof8SdAmp2soSJcNuQ6wdP/ydDg9GiM5VHLO2gAX8 N/w5TD+nsrijmt41UVcisVwQkqtQKyd+mBgupqL2+j4JAML0xQeom6AtltjE9R826b3t TugOIV9V/IaZCfmh3pBQ085eq9Hv1LKXRkHtrHPFjLrFM6hGxrTKJzOj1HrKmhdicTNU tRsScQ3l1o8lSWiqeinTbCeTLWRPMgbnAB476PiBQyoJ+YFkkur0bLu3dTCo9jZD6/j/ GIRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jWkLOfHk; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a13-v6si2208365plt.142.2018.04.27.15.50.05; Fri, 27 Apr 2018 15:50:19 -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=@gmail.com header.s=20161025 header.b=jWkLOfHk; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759413AbeD0WtB (ORCPT + 99 others); Fri, 27 Apr 2018 18:49:01 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:38432 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759215AbeD0WtA (ORCPT ); Fri, 27 Apr 2018 18:49:00 -0400 Received: by mail-pf0-f195.google.com with SMTP id o76so2474910pfi.5; Fri, 27 Apr 2018 15:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=V0OYwUhJw4wDnLF7eqQc7xmEtbXgpZizhcWvWj4W+M0=; b=jWkLOfHkaLWYoMWAF0X1OAgUOwmafv+llhWeVbJEVuUgPcURnxKjJ0+Dg9YEzW+X1N WJNEmgVnMWUu1EmUWGg362Z+0n9vNl0tO62Sjg5wgpFwwy3UmNjPbxs1l8QmpcE3f/nF 7vpoGMqgiNHniGOGRulJGO7b2hTAQZztZ87eZvOWEQAHZyqRwtUqiFnzk0Z9K+y0Tk7n e/uTuMOfGAw9qeRe+KOHuV4ylw5zQDAUJCJYJ+de0oL9IOPjMh2Gb86IKgk3oxyHUuQr bkTd4YuVoHIbCsyGKDJ40xuT4940YdCtqTOHuioR6ujcLbsYKZg+zBwZP9fsnDuSSMa2 xNIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=V0OYwUhJw4wDnLF7eqQc7xmEtbXgpZizhcWvWj4W+M0=; b=BdNpLgoN+m66S7YTs1xwqYZ16ovAB9KG2mQMg6aLXIjOCcrFuyq2nmoxqFfJsqqbHo rRRcjMHoHP9ASdK6JYeB7ASRqMv/SPTeZVhka/OTlpiN+w+BQXlop02ShkSictTR54qX n3w3/AeRZxMSsetnU3198aGolKbg7Xj24cjyRwKjxxJ9hUNVI7esXMis1mA1TZbE+UJ0 IvflNC/iKe2UCQiKIvheKI5/MCqBJit2B0wcRcBLjgx7/Wffy+ZybRjhiHwx5V5yBAe4 nwtlPfzxEpCRPUvUzaGnXZFZ1hPD7M6+6zqeyOzMdAFxM2FRjgIrSsake/iCaJwImzvT nOyg== X-Gm-Message-State: ALQs6tCx0HYaXeBvk/LJDqmSXAQEccdV9OajdqlxExUBBgjCbxf/oDSg rxu8FcUaXzYjvNXmeSli4KU= X-Received: by 10.98.24.214 with SMTP id 205mr3761260pfy.242.1524869339401; Fri, 27 Apr 2018 15:48:59 -0700 (PDT) Received: from ast-mbp ([2620:10d:c090:180::1:cdfc]) by smtp.gmail.com with ESMTPSA id x2sm5173404pfk.113.2018.04.27.15.48.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Apr 2018 15:48:58 -0700 (PDT) Date: Fri, 27 Apr 2018 15:48:56 -0700 From: Alexei Starovoitov To: Wang YanQing , daniel@iogearbox.net, ast@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] bpf: fix misaligned access for BPF_PROG_TYPE_PERF_EVENT program type on x86_32 platform Message-ID: <20180427224854.2g7ximim7nwkgdpd@ast-mbp> References: <20180426095749.GA29207@udknight> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180426095749.GA29207@udknight> User-Agent: NeoMutt/20180223 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 26, 2018 at 05:57:49PM +0800, Wang YanQing wrote: > All the testcases for BPF_PROG_TYPE_PERF_EVENT program type in > test_verifier(kselftest) report below errors on x86_32: > " > 172/p unpriv: spill/fill of different pointers ldx FAIL > Unexpected error message! > 0: (bf) r6 = r10 > 1: (07) r6 += -8 > 2: (15) if r1 == 0x0 goto pc+3 > R1=ctx(id=0,off=0,imm=0) R6=fp-8,call_-1 R10=fp0,call_-1 > 3: (bf) r2 = r10 > 4: (07) r2 += -76 > 5: (7b) *(u64 *)(r6 +0) = r2 > 6: (55) if r1 != 0x0 goto pc+1 > R1=ctx(id=0,off=0,imm=0) R2=fp-76,call_-1 R6=fp-8,call_-1 R10=fp0,call_-1 fp-8=fp > 7: (7b) *(u64 *)(r6 +0) = r1 > 8: (79) r1 = *(u64 *)(r6 +0) > 9: (79) r1 = *(u64 *)(r1 +68) > invalid bpf_context access off=68 size=8 > > 378/p check bpf_perf_event_data->sample_period byte load permitted FAIL > Failed to load prog 'Permission denied'! > 0: (b7) r0 = 0 > 1: (71) r0 = *(u8 *)(r1 +68) > invalid bpf_context access off=68 size=1 > > 379/p check bpf_perf_event_data->sample_period half load permitted FAIL > Failed to load prog 'Permission denied'! > 0: (b7) r0 = 0 > 1: (69) r0 = *(u16 *)(r1 +68) > invalid bpf_context access off=68 size=2 > > 380/p check bpf_perf_event_data->sample_period word load permitted FAIL > Failed to load prog 'Permission denied'! > 0: (b7) r0 = 0 > 1: (61) r0 = *(u32 *)(r1 +68) > invalid bpf_context access off=68 size=4 > > 381/p check bpf_perf_event_data->sample_period dword load permitted FAIL > Failed to load prog 'Permission denied'! > 0: (b7) r0 = 0 > 1: (79) r0 = *(u64 *)(r1 +68) > invalid bpf_context access off=68 size=8 > " > > This patch fix it, the fix isn't only necessary for x86_32, it will fix the > same problem for other platforms too, if their size of bpf_user_pt_regs_t > can't divide exactly into 8. > > Signed-off-by: Wang YanQing > --- > Hi all! > After mainline accept this patch, then we need to submit a sync patch > to update the tools/include/uapi/linux/bpf_perf_event.h. > > Thanks. > > include/uapi/linux/bpf_perf_event.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/uapi/linux/bpf_perf_event.h b/include/uapi/linux/bpf_perf_event.h > index eb1b9d2..ff4c092 100644 > --- a/include/uapi/linux/bpf_perf_event.h > +++ b/include/uapi/linux/bpf_perf_event.h > @@ -12,7 +12,7 @@ > > struct bpf_perf_event_data { > bpf_user_pt_regs_t regs; > - __u64 sample_period; > + __u64 sample_period __attribute__((aligned(8))); I don't think this necessary. imo it's a bug in pe_prog_is_valid_access that should have allowed 8-byte access to 4-byte aligned sample_period. The access rewritten by pe_prog_convert_ctx_access anyway, no alignment issues as far as I can see.