Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1104834ybi; Sat, 27 Jul 2019 02:48:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqz3eWlc2j8FWvCaOIpDeDLCQjY+kJIyjRIWLNKZrkVUTMbcaxts/fx78Tkp5Yd6m6kf/QnF X-Received: by 2002:a17:902:8b88:: with SMTP id ay8mr97425065plb.139.1564220896196; Sat, 27 Jul 2019 02:48:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564220896; cv=none; d=google.com; s=arc-20160816; b=IB9t3de9KVz0yZsKX5zFnKhl3koibgPjdamTEK+AYtb7wWf07+eeQOCRISRMrWpSTC /GuyqRwJApe778LqViSXz4PfWPG+pmiqHSlT70X+WKXDH8pRP+RREYirpg91naZ7f9Q7 GQ4hnF9jSRpuPwjDAyo+hAlQ1XtIoqfCCZe+oTfZkN8+h1r0U8Ofzr3uZ300ac4pTscq PzB9FSDaroU+ohr1+s2yg76Rj59OQuG3ijdqRmczBbLAQ/+Nn0UB3eUz+gPxj8QOPdqC St+OPVE0Hlh+y3N0DQIpSFsw0fDLkKcN6o6TQ89A5bvGAbIgUDafMbZE7OsBPinHJM8O Iwgg== 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 :dkim-signature; bh=gWGvMEWPUwkQ1lf4DZiGK2WYkmW65fsQcN/6aUsm6f4=; b=u6kfXTkKkpLDt0CGZiyHnxxGfW8Tg51+DMqAV+3iq1UlVCssi4hDM0bwdHuQxUtvxy Wq9Aqhxsp7sZ60c7DzWuDi2fhFDiokFonwlc/vqtMsK0Ijr8HClWmP+X8+//AILJ4Bzr I38iDJgwCz9wzRRvhjiXiJQ7JV+IpIVfZFqMZLQO9fthX1Ffec4cFntVJc/XkcRaoGHF 6xr06j/BWEtPvm5vNlv1QzjkszE/CNm+UxjAhPt+ZRATCgTXMaJKLAWef8bJqQFyeVWf az1j+fycDQwmwmw5WAZEExSzwiTY55NcZZOxKWL/wpHJUyy8GxOFsvtaiG3e1HhlygPu clfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=uH9AV7Df; 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=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c35si12911771pgm.51.2019.07.27.02.48.00; Sat, 27 Jul 2019 02:48: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=uH9AV7Df; 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387570AbfG0Jqp (ORCPT + 99 others); Sat, 27 Jul 2019 05:46:45 -0400 Received: from mail.kernel.org ([198.145.29.99]:52394 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727885AbfG0Jqo (ORCPT ); Sat, 27 Jul 2019 05:46:44 -0400 Received: from devnote2 (NE2965lan1.rev.em-net.ne.jp [210.141.244.193]) (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 AEFA920651; Sat, 27 Jul 2019 09:46:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564220803; bh=BGA5k1Ua4iwHHhg8twY7qUz0ZWvcvVd41aByooCam/0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=uH9AV7Df2pI/ygeVXHowKTMVg2DpJEMnlWIEUEfGs+21KOYNM66akXmo5GMb8iXND yq1UOTs+aKBGP44cHeayzCHHeYmOCcSRuGkXi9/VlpTVvVFTC/UgQxbz78ynXDU3Mx Sp4q6jngGNUyHg3/sKc3btiQjZLgTRK+uWWv/HV8= Date: Sat, 27 Jul 2019 18:46:38 +0900 From: Masami Hiramatsu To: Arnaldo Carvalho de Melo Cc: Adrian Hunter , Numfor Mbiziwo-Tiapo , peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com, jolsa@redhat.com, namhyung@kernel.org, songliubraving@fb.com, mbd@fb.com, linux-kernel@vger.kernel.org, irogers@google.com, eranian@google.com Subject: Re: [PATCH 3/3] Fix insn.c misaligned address error Message-Id: <20190727184638.3263eb76c3cbde95f9896210@kernel.org> In-Reply-To: <20190726193806.GB24867@kernel.org> References: <20190724184512.162887-1-nums@google.com> <20190724184512.162887-4-nums@google.com> <20190726193806.GB24867@kernel.org> X-Mailer: Sylpheed 3.5.1 (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, 26 Jul 2019 16:38:06 -0300 Arnaldo Carvalho de Melo wrote: > Em Wed, Jul 24, 2019 at 11:45:12AM -0700, Numfor Mbiziwo-Tiapo escreveu: > > The ubsan (undefined behavior sanitizer) version of perf throws an > > error on the 'x86 instruction decoder - new instructions' function > > of perf test. > > > > To reproduce this run: > > make -C tools/perf USE_CLANG=1 EXTRA_CFLAGS="-fsanitize=undefined" > > > > then run: tools/perf/perf test 62 -v > > > > The error occurs in the __get_next macro (line 34) where an int is > > read from a potentially unaligned address. Using memcpy instead of > > assignment from an unaligned pointer. > > Since this came from the kernel, don't we have to fix it there as well? > Masami, Adrian? I guess we don't need it, since x86 can access "unaligned address" and x86 insn decoder in kernel runs only on x86. I'm not sure about perf's that part. Maybe if we run it on other arch as cross-arch application, it may cause unaligned pointer issue. Thank you, > > [acme@quaco perf]$ find . -name insn.c > ./arch/x86/lib/insn.c > ./arch/arm/kernel/insn.c > ./arch/arm64/kernel/insn.c > ./tools/objtool/arch/x86/lib/insn.c > ./tools/perf/util/intel-pt-decoder/insn.c > [acme@quaco perf]$ diff -u ./tools/perf/util/intel-pt-decoder/insn.c ./arch/x86/lib/insn.c > --- ./tools/perf/util/intel-pt-decoder/insn.c 2019-07-06 16:59:05.734265998 -0300 > +++ ./arch/x86/lib/insn.c 2019-07-06 16:59:01.369202998 -0300 > @@ -10,8 +10,8 @@ > #else > #include > #endif > -#include "inat.h" > -#include "insn.h" > +#include > +#include > > /* Verify next sizeof(t) bytes can be on the same instruction */ > #define validate_next(t, insn, n) \ > [acme@quaco perf]$ > > > - Arnaldo > > > Signed-off-by: Numfor Mbiziwo-Tiapo > > --- > > tools/perf/util/intel-pt-decoder/insn.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/tools/perf/util/intel-pt-decoder/insn.c b/tools/perf/util/intel-pt-decoder/insn.c > > index ca983e2bea8b..de1944c60aa9 100644 > > --- a/tools/perf/util/intel-pt-decoder/insn.c > > +++ b/tools/perf/util/intel-pt-decoder/insn.c > > @@ -31,7 +31,8 @@ > > ((insn)->next_byte + sizeof(t) + n <= (insn)->end_kaddr) > > > > #define __get_next(t, insn) \ > > - ({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; }) > > + ({ t r; memcpy(&r, insn->next_byte, sizeof(t)); \ > > + insn->next_byte += sizeof(t); r; }) > > > > #define __peek_nbyte_next(t, insn, n) \ > > ({ t r = *(t*)((insn)->next_byte + n); r; }) > > -- > > 2.22.0.657.g960e92d24f-goog > > -- > > - Arnaldo -- Masami Hiramatsu