From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753169AbdK0XHt (ORCPT ); Mon, 27 Nov 2017 18:07:49 -0500 Received: from mga04.intel.com ([192.55.52.120]:26845 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751771AbdK0XHs (ORCPT ); Mon, 27 Nov 2017 18:07:48 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,465,1505804400"; d="scan'208";a="153815751" Date: Mon, 27 Nov 2017 15:07:47 -0800 From: Andi Kleen To: Peter Zijlstra Cc: Milind Chabbi , Jiri Olsa , Jiri Olsa , Ingo Molnar , Arnaldo Carvalho de Melo , lkml , Namhyung Kim , David Ahern , Alexander Shishkin , Michael Ellerman , Hari Bathini , Jin Yao , Kan Liang , Sukadev Bhattiprolu , Oleg Nesterov , Will Deacon Subject: Re: [PATCH 4/6] hw_breakpoint: Factor out __modify_user_hw_breakpoint function Message-ID: <20171127230747.GC3070@tassilo.jf.intel.com> References: <20171127162133.21163-1-jolsa@kernel.org> <20171127162133.21163-5-jolsa@kernel.org> <20171127164639.3ymnc6io3eae7n4c@hirez.programming.kicks-ass.net> <20171127170911.GA22026@krava> <20171127171203.tmdvcsnsownieijv@hirez.programming.kicks-ass.net> <20171127172532.GA23094@krava> <20171127173417.eokpkznt65yreoav@hirez.programming.kicks-ass.net> <20171127212003.aauonfkbl45pd7dj@hirez.programming.kicks-ass.net> <20171127220128.kzgywcu5ucudaeyl@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171127220128.kzgywcu5ucudaeyl@hirez.programming.kicks-ass.net> User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Nov 27, 2017 at 11:01:28PM +0100, Peter Zijlstra wrote: > On Mon, Nov 27, 2017 at 01:50:30PM -0800, Milind Chabbi wrote: > > The possible checks is infinite > > struct perf_event_attr is very much a finite data type. > > Something as simple as: > > struct perf_event_attr tmp1 = new_attr, tmp2 = event->attr; > > tmp1.bp_type = tmp2.bp_type; > tmp1.bp_addr = tmp2.bp_addr; > tmp1.bp_len = tmp2.bp_len; > > if (memcmp(&tmp1, &tmp2, sizeof(tmp1))) > return -EINVAL; > > would actually do the checks __modify_user_hw_breakpoint() needs to do. It could fail with uninitialized padding. -Andi