From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Naveen N. Rao" Subject: Re: [RFC PATCH] bpf: Add helpers to read useful task_struct members Date: Tue, 07 Nov 2017 14:07:34 +0530 Message-ID: <1510042830.62prnydrlw.naveen@linux.ibm.com> References: <20171103065833.8076-1-sandipan@linux.vnet.ibm.com> <94a4761f-1b51-8b70-fb7f-3cea91c69717@fb.com> <1509815348.8zu63uatdo.naveen@linux.ibm.com> <4acdc081-341d-ee91-a591-b1d331a8c8d5@fb.com> <1509982000.092la4257a.naveen@linux.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8BIT Cc: Brendan Gregg , daniel@iogearbox.net, Martin KaFai Lau , Kees Cook , linux-kernel@vger.kernel.org To: Alexei Starovoitov , netdev@vger.kernel.org, Sandipan Das Return-path: Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:41276 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932811AbdKGIhm (ORCPT ); Tue, 7 Nov 2017 03:37:42 -0500 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vA78b9L3088862 for ; Tue, 7 Nov 2017 03:37:42 -0500 Received: from e06smtp12.uk.ibm.com (e06smtp12.uk.ibm.com [195.75.94.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 2e35stu2wm-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 07 Nov 2017 03:37:42 -0500 Received: from localhost by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 7 Nov 2017 08:37:39 -0000 In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: Alexei Starovoitov wrote: > On 11/7/17 12:55 AM, Naveen N. Rao wrote: >>> I thought such struct shouldn't change layout. >>> If it is we need to fix include/linux/compiler-clang.h to do that >>> anon struct as well. >> >> We considered that, but it looked to be very dependent on the version of >> gcc used to build the kernel. But, this may be a simpler approach for >> the shorter term. >> > > why it would depend on version of gcc? >>From what I can see, randomized_struct_fields_start is defined only for gcc >= 4.6. For older versions, it does not get mapped to an anonymous structure. We may not care for older gcc versions, but.. The other issue was that __randomize_layout maps to __designated_init when randstruct plugin is not enabled, which is in turn an attribute on gcc >= v5.1, but not otherwise. > We just need this, no? > > diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h > index de179993e039..4e29ab6187cb 100644 > --- a/include/linux/compiler-clang.h > +++ b/include/linux/compiler-clang.h > @@ -15,3 +15,6 @@ > * with any version that can compile the kernel > */ > #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), > __COUNTER__) > + > +#define randomized_struct_fields_start struct { > +#define randomized_struct_fields_end }; > > since offsets are mandated by C standard. Yes, this is what we're testing with and is probably sufficient for our purposes. - Naveen