A MIPS64 kernel may support ELF files for all 3 MIPS ABIs (O32, N32, N64). Furthermore, the AUDIT_ARCH_MIPS{,EL}64 token does not provide enough information about the ABI for the 64-bit process. As a result of which, userland needs to use complex seccomp filters to decide whether a syscall belongs to the o32 or n32 or n64 ABI. Therefore, a new arch token for MIPS64/n32 is added so it can be used by seccomp to explicitely set syscall filters for this ABI.
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -331,9 +331,17 @@ enum { · 330 unmodified lines | ||
| 331 | 331 | #define AUDIT_FAIL_PRINTK 1 |
| 332 | 332 | #define AUDIT_FAIL_PANIC 2 |
| 333 | 333 | |
| 334 | +/* | |
| 335 | + * These bits disambiguate different calling conventions that share an | |
| 336 | + * ELF machine type, bitness, and endianness | |
| 337 | + */ | |
| 338 | +#define __AUDIT_ARCH_CONVENTION_MASK 0x30000000 | |
| 339 | +#define __AUDIT_ARCH_CONVENTION_MIPS64_N32 0x20000000 | |
| 340 | + | |
| 334 | 341 | /* distinguish syscall tables */ |
| 335 | 342 | #define __AUDIT_ARCH_64BIT 0x80000000 |
| 336 | 343 | #define __AUDIT_ARCH_LE 0x40000000 |
| 344 | + | |
| 337 | 345 | #define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) |
| 338 | 346 | #define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE) |
| 339 | 347 | #define AUDIT_ARCH_ARMEB (EM_ARM) |
| @@ -346,7 +354,11 @@ enum { · 6 unmodified lines | ||
| 346 | 354 | #define AUDIT_ARCH_MIPS (EM_MIPS) |
| 347 | 355 | #define AUDIT_ARCH_MIPSEL (EM_MIPS|__AUDIT_ARCH_LE) |
| 348 | 356 | #define AUDIT_ARCH_MIPS64 (EM_MIPS|__AUDIT_ARCH_64BIT) |
| 357 | +#define AUDIT_ARCH_MIPS64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|\ | |
| 358 | + __AUDIT_ARCH_CONVENTION_MIPS64_N32) | |
| 349 | 359 | #define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) |
| 360 | +#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE\ | |
| 361 | + __AUDIT_ARCH_CONVENTION_MIPS64_N32) | |
| 350 | 362 | #define AUDIT_ARCH_OPENRISC (EM_OPENRISC) |
| 351 | 363 | #define AUDIT_ARCH_PARISC (EM_PARISC) |
| 352 | 364 | #define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT) |