Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752797AbdLDKDY (ORCPT ); Mon, 4 Dec 2017 05:03:24 -0500 Received: from mail-it0-f67.google.com ([209.85.214.67]:41823 "EHLO mail-it0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752316AbdLDKDU (ORCPT ); Mon, 4 Dec 2017 05:03:20 -0500 X-Google-Smtp-Source: AGs4zMbubT2HoxZ/6KKB7Bl2s7BzJwPiJrqOWoP2UjG9/lVTFDejmUddReCzG7lhwjdYQHOKnFV8UiJLa/61ZT8iLMA= MIME-Version: 1.0 In-Reply-To: <20171204095936.GA10547@kroah.com> References: <20171130171036.GB31817@kroah.com> <20171201094846.GE9353@kroah.com> <20171202222244.GA3799@codeblueprint.co.uk> <20171204020216.GA2436@dhcp-128-65.nay.redhat.com> <20171204073642.GC19596@kroah.com> <20171204092928.GA4421@dhcp-128-65.nay.redhat.com> <20171204093430.GA6463@kroah.com> <20171204095936.GA10547@kroah.com> From: Ard Biesheuvel Date: Mon, 4 Dec 2017 10:03:19 +0000 Message-ID: Subject: Re: [GIT PULL] hash addresses printed with %p To: Greg Kroah-Hartman Cc: Dave Young , Matt Fleming , Linus Torvalds , "Tobin C. Harding" , LKML , "linux-efi@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2447 Lines: 63 On 4 December 2017 at 09:59, Greg Kroah-Hartman wrote: > On Mon, Dec 04, 2017 at 09:48:37AM +0000, Ard Biesheuvel wrote: >> On 4 December 2017 at 09:34, Greg Kroah-Hartman >> wrote: >> > On Mon, Dec 04, 2017 at 05:29:28PM +0800, Dave Young wrote: >> >> On 12/04/17 at 08:36am, Greg Kroah-Hartman wrote: >> >> > On Mon, Dec 04, 2017 at 10:02:16AM +0800, Dave Young wrote: >> >> > > +#define __ATTR_IRUSR(_name) { \ >> >> > > + .attr = { .name = __stringify(_name), .mode = S_IRUSR }, \ >> >> > > + .show = _name##_show, \ >> >> > > +} >> >> > >> >> > Ick, no, as others, including Linus, have said, using IRUSER is a pain >> >> > in the ass to try to look up and remember what it is... >> >> > >> >> > Just use __ATTR() please, it should be fine for what you need to do, >> >> > which is special-case a sysfs attribute. >> >> >> >> Hmm, I was hesitating to do that because it needs either long code >> >> (over 80 chars) or some driver internal macros. >> >> >> >> There is already same issue in dmi-sysfs.c, it uses an internal macro >> >> DMI_SYSFS_ATTR for 0400 attr. I did not search all the kernel code, >> >> there might be more for such special cases. Maybe we can add some >> >> comment in sysfs.h to mention this is for some special case? >> >> >> >> I can do something similar as dmi sysfs code though. >> > >> > Hm, let me look at this this afternoon when I get through some stable >> > patches, it shouldn't be that complex to need a whole new macro... >> > >> >> But wasn't that the whole point? That there is a macro that does what >> you don't want (__ATTR_RO) and none that does what you do want? > > my point is that __ATTR() should work for you as-is... Well, not entirely. Not sure if the runtime-map code is doing anything wrong here, but it defines struct map_attribute { struct attribute attr; ssize_t (*show)(struct efi_runtime_map_entry *entry, char *buf); }; and uses __ATTR_RO() to emit initializers for it. __ATTR() initializes the .store member as well, which does not exists, and so it cannot be used directly. So we should either add a .store member that is always NULL, or we should add our own #define __ATTR_0400(_name) { \ .attr = { .name = __stringify(_name), .mode = 0400 }, \ .show = _name##_show, \ } that does not set .store at all. -- Ard.