All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Metcalf <cmetcalf@tilera.com>
To: Eric Paris <eparis@redhat.com>
Cc: <linux-kernel@vger.kernel.org>,
	AKASHI Takahiro <takahiro.akashi@linaro.org>
Subject: Re: [PATCH] compat_audit: allow it to work without asm/unistd32.h
Date: Mon, 24 Mar 2014 12:39:32 -0400	[thread overview]
Message-ID: <53305FC4.3040002@tilera.com> (raw)
In-Reply-To: <1395678071.24733.3.camel@flatline.rdu.redhat.com>

The problem is that audit_is_compat() is a dynamic test that the compiler
can't optimize away, so you end with an undefined reference to
audit_classify_compat_syscall(). 

For some reason audit_classify_compat_syscall() is declared as __weak
in <linux/audit.h>; usually the __weak tag is only provided on the definition.
But I suppose you could imagine providing a weak definition in lib/audit.c
itself.

Or there could be a CONFIG_AUDIT_COMPAT symbol that architectures need to
set if they want to have audit_is_compat() return anything other than "false",
and then just use that symbol in the #ifdef in <uapi/linux/audit.h>.  In that
case the compiler would optimize away the call to audit_classify_compat_syscall().

My guess is that the second option is probably cleanest.

On 3/24/2014 12:21 PM, Eric Paris wrote:
> I don't know tilegx, but I have replaced 223b24d807610 with
> 4b58841149dcaa5.  I believe adding AUDIT_ARCH_COMPAT_GENERIC was
> akashi-san's  fix for this problem on mips.  Is this a better fix?
>
> Thanks
> -Eric
>
> On Thu, 2014-03-20 at 11:31 -0400, Chris Metcalf wrote:
>> For architectures that use the asm-generic syscall table for both
>> 32- and 64-bit, there should be no need to provide a separate
>> <asm/unistd32.h>; just using <linux/unistd.h> is sufficient.
>> Conditionalize use of <asm/unistd32.h> on the one platform that
>> currently requires it (arm64).  If another platform ends up needing
>> it we can create a suitable config flag at that point.
>>
>> This change fixes the tilegx build failure seen in linux-next.
>>
>> Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
>> ---
>> By the way - I also note that commit 223b24d807610 that introduced
>> this also put an "#ifdef COMPAT_xxx" in a UAPI header.  This seems
>> like a pretty clear signal that the added code should be in
>> linux/include/audit.h, not linux/uapi/include/audit.h.  But here
>> I'm just focussing on getting tilegx to continue to build...
>>
>>  lib/compat_audit.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/compat_audit.c b/lib/compat_audit.c
>> index 873f75b640ab..e89a84b3fbe8 100644
>> --- a/lib/compat_audit.c
>> +++ b/lib/compat_audit.c
>> @@ -1,6 +1,11 @@
>>  #include <linux/init.h>
>>  #include <linux/types.h>
>> -#include <asm/unistd32.h>
>> +#ifdef COMPAT_ARM64
>> +/* 64-bit syscalls are generic, but 32-bit are not. */
>> +# include <asm/unistd32.h>
>> +#else
>> +# include <linux/unistd.h>
>> +#endif
>>  
>>  unsigned compat_dir_class[] = {
>>  #include <asm-generic/audit_dir_write.h>
>

-- 
Chris Metcalf, Tilera Corp.
http://www.tilera.com


  reply	other threads:[~2014-03-24 16:39 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-20 15:31 [PATCH] compat_audit: allow it to work without asm/unistd32.h Chris Metcalf
2014-03-24 16:21 ` Eric Paris
2014-03-24 16:39   ` Chris Metcalf [this message]
2014-03-25  2:16     ` AKASHI Takahiro
2014-03-25 13:25       ` Chris Metcalf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53305FC4.3040002@tilera.com \
    --to=cmetcalf@tilera.com \
    --cc=eparis@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=takahiro.akashi@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.