diff mbox

[v2,3/3] audit(userspace): Add compat system call support for AArch64

Message ID 1389946529-4590-4-git-send-email-takahiro.akashi@linaro.org
State New
Headers show

Commit Message

AKASHI Takahiro Jan. 17, 2014, 8:15 a.m. UTC
For 32-bit task auditing (-F arch=b32), internally-used machine type will
be overwritten to MACH_ARM[EB] in order to use a correct system call
lookup table.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
---
 lib/libaudit.c |    6 ++++++
 1 file changed, 6 insertions(+)

Comments

AKASHI Takahiro Jan. 20, 2014, 5:05 a.m. UTC | #1
[+ Cc: Eric]

On 01/18/2014 12:05 AM, Will Deacon wrote:
> On Fri, Jan 17, 2014 at 08:15:29AM +0000, AKASHI Takahiro wrote:
>> For 32-bit task auditing (-F arch=b32), internally-used machine type will
>> be overwritten to MACH_ARM[EB] in order to use a correct system call
>> lookup table.
>>
>> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
>> ---
>>   lib/libaudit.c |    6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/lib/libaudit.c b/lib/libaudit.c
>> index 77b3f9b..df2af2a 100644
>> --- a/lib/libaudit.c
>> +++ b/lib/libaudit.c
>> @@ -1306,6 +1306,12 @@ int audit_rule_fieldpair_data(struct audit_rule_data **rulep, const char *pair,
>>   				else if (bits == ~__AUDIT_ARCH_64BIT &&
>>   					machine == MACH_S390X)
>>   						machine = MACH_S390;
>> +				else if (bits == ~__AUDIT_ARCH_64BIT &&
>> +					machine == MACH_AARCH64)
>> +						machine = MACH_ARM;
>> +				else if (bits == ~__AUDIT_ARCH_64BIT &&
>> +					machine == MACH_AARCH64EB)
>> +						machine = MACH_ARMEB;
>
> Why do you care about MACH_ARMEB? The syscall APIs are identical for either
> endianness.


Yeah, I remember that you have already mentioned it before:

On 11/08/2013 11:34 PM, Will Deacon wrote:
 > On Wed, Nov 06, 2013 at 10:25:42AM +0000, AKASHI Takahiro wrote:
 >> * Userspace audit package
 >>    There are some missing syscall definitions in lib/aarch64_table.h.
 >>    There is no support for AUDIT_ARCH_ARM (I mean LE. armeb is BE).
 >
 > I did post something over a year ago... did it not get picked up?
 >
 >    http://permalink.gmane.org/gmane.linux.ports.arm.kernel/165266

But since then, I've never got any follow-ups from audit folks (especially Eric)
and so just kept the code unchanged and made my changes compatible with it.

Once we all agree, I will be easily able to remove such a conditional.

-Takahiro AKASHI


> Will
>
diff mbox

Patch

diff --git a/lib/libaudit.c b/lib/libaudit.c
index 77b3f9b..df2af2a 100644
--- a/lib/libaudit.c
+++ b/lib/libaudit.c
@@ -1306,6 +1306,12 @@  int audit_rule_fieldpair_data(struct audit_rule_data **rulep, const char *pair,
 				else if (bits == ~__AUDIT_ARCH_64BIT &&
 					machine == MACH_S390X)
 						machine = MACH_S390;
+				else if (bits == ~__AUDIT_ARCH_64BIT &&
+					machine == MACH_AARCH64)
+						machine = MACH_ARM;
+				else if (bits == ~__AUDIT_ARCH_64BIT &&
+					machine == MACH_AARCH64EB)
+						machine = MACH_ARMEB;
 
 				/* Check for errors - return -6 
 				 * We don't allow 32 bit machines to specify