[PATCH] audit/userspace: add support for the parisc architecture

Helge Deller deller at gmx.de
Wed Nov 20 20:16:38 UTC 2013


Any chance this patch can be applied to SVN ?
The Linux kernel patch for parisc itself is already upstream...

Thanks,
Helge

On 10/15/2013 07:56 PM, Helge Deller wrote:
> The patch below adds support for the parisc architecture to the audit
> userspace tool.
> 
> It would be great if you could apply this patch to trunk.
> 
> I posted the corresponding Linux kernel patch to the parisc mailing list
> (https://patchwork.kernel.org/patch/3046731/) and plan to push it upstream when
> the merge window for Linux kernel v3.13 opens.
> 
> Signed-off-by: Helge Deller <deller at gmx.de>
> 
> --- audit-2.3.2.orig/lib/Makefile.am
> +++ audit-2.3.2/lib/Makefile.am
> @@ -40,7 +40,7 @@ nodist_libaudit_la_SOURCES = $(BUILT_SOU
>  BUILT_SOURCES = actiontabs.h errtabs.h fieldtabs.h flagtabs.h \
>  	ftypetabs.h i386_tables.h ia64_tables.h machinetabs.h \
>  	msg_typetabs.h optabs.h ppc_tables.h s390_tables.h \
> -	s390x_tables.h x86_64_tables.h
> +	s390x_tables.h x86_64_tables.h parisc_tables.h
>  if USE_ALPHA
>  BUILT_SOURCES += alpha_tables.h
>  endif
> @@ -54,7 +54,7 @@ noinst_PROGRAMS = gen_actiontabs_h gen_e
>  	gen_flagtabs_h gen_ftypetabs_h gen_i386_tables_h \
>  	gen_ia64_tables_h gen_machinetabs_h gen_msg_typetabs_h \
>  	gen_optabs_h gen_ppc_tables_h gen_s390_tables_h \
> -	gen_s390x_tables_h gen_x86_64_tables_h
> +	gen_s390x_tables_h gen_x86_64_tables_h gen_parisc_tables_h
>  if USE_ALPHA
>  noinst_PROGRAMS += gen_alpha_tables_h
>  endif
> @@ -142,6 +142,11 @@ gen_ppc_tables_h_CFLAGS = $(AM_CFLAGS) '
>  ppc_tables.h: gen_ppc_tables_h Makefile
>  	./gen_ppc_tables_h --lowercase --i2s --s2i ppc_syscall > $@
>  
> +gen_parisc_tables_h_SOURCES = gen_tables.c gen_tables.h parisc_table.h
> +gen_parisc_tables_h_CFLAGS = $(AM_CFLAGS) '-DTABLE_H="parisc_table.h"'
> +parisc_tables.h: gen_parisc_tables_h Makefile
> +	./gen_parisc_tables_h --lowercase --i2s --s2i parisc_syscall > $@
> +
>  gen_s390_tables_h_SOURCES = gen_tables.c gen_tables.h s390_table.h
>  gen_s390_tables_h_CFLAGS = $(AM_CFLAGS) '-DTABLE_H="s390_table.h"'
>  s390_tables.h: gen_s390_tables_h Makefile
> --- audit-2.3.2.orig/lib/libaudit.c
> +++ audit-2.3.2/lib/libaudit.c
> @@ -1304,6 +1304,9 @@ int audit_rule_fieldpair_data(struct aud
>  					machine == MACH_PPC64)
>  						machine = MACH_PPC;
>  				else if (bits == ~__AUDIT_ARCH_64BIT &&
> +					machine == MACH_PARISC64)
> +						machine = MACH_PARISC;
> +				else if (bits == ~__AUDIT_ARCH_64BIT &&
>  					machine == MACH_S390X)
>  						machine = MACH_S390;
>  
> @@ -1324,6 +1327,10 @@ int audit_rule_fieldpair_data(struct aud
>  						if (bits == __AUDIT_ARCH_64BIT)
>  							return -6;
>  						break;
> +					case MACH_PARISC:
> +						if (bits == __AUDIT_ARCH_64BIT)
> +							return -6;
> +						break;
>  					case MACH_S390:
>  						if (bits == __AUDIT_ARCH_64BIT)
>  							return -6;
> @@ -1342,6 +1349,7 @@ int audit_rule_fieldpair_data(struct aud
>  #endif
>  					case MACH_86_64: /* fallthrough */
>  					case MACH_PPC64: /* fallthrough */
> +					case MACH_PARISC64: /* fallthrough */
>  					case MACH_S390X: /* fallthrough */
>  						break;
>  					default:
> --- audit-2.3.2.orig/lib/libaudit.h
> +++ audit-2.3.2/lib/libaudit.h
> @@ -417,7 +417,9 @@ typedef enum {
>  	MACH_S390,
>  	MACH_ALPHA,
>  	MACH_ARMEB,
> -	MACH_AARCH64
> +	MACH_AARCH64,
> +	MACH_PARISC64,
> +	MACH_PARISC
>  } machine_t;
>  
>  /* These are the valid audit failure tunable enum values */
> --- audit-2.3.2.orig/lib/lookup_table.c
> +++ audit-2.3.2/lib/lookup_table.c
> @@ -47,6 +47,7 @@
>  #include "i386_tables.h"
>  #include "ia64_tables.h"
>  #include "ppc_tables.h"
> +#include "parisc_tables.h"
>  #include "s390_tables.h"
>  #include "s390x_tables.h"
>  #include "x86_64_tables.h"
> @@ -82,6 +83,8 @@ static const struct int_transtab elftab[
>  #ifdef WITH_AARCH64
>      { MACH_AARCH64, AUDIT_ARCH_AARCH64},
>  #endif
> +    { MACH_PARISC64,AUDIT_ARCH_PARISC64 },
> +    { MACH_PARISC,  AUDIT_ARCH_PARISC   },
>  };
>  #define AUDIT_ELF_NAMES (sizeof(elftab)/sizeof(elftab[0]))
>  
> @@ -126,6 +129,10 @@ int audit_name_to_syscall(const char *sc
>  		case MACH_PPC:
>  			found = ppc_syscall_s2i(sc, &res);
>  			break;
> +		case MACH_PARISC64:
> +		case MACH_PARISC:
> +			found = parisc_syscall_s2i(sc, &res);
> +			break;
>  		case MACH_S390X:
>  			found = s390x_syscall_s2i(sc, &res);
>  			break;
> @@ -171,6 +178,9 @@ const char *audit_syscall_to_name(int sc
>  		case MACH_PPC64:
>  		case MACH_PPC:
>  			return ppc_syscall_i2s(sc);
> +		case MACH_PARISC64:
> +		case MACH_PARISC:
> +			return parisc_syscall_i2s(sc);
>  		case MACH_S390X:
>  			return s390x_syscall_i2s(sc);
>  		case MACH_S390:
> --- audit-2.3.2.orig/lib/machinetab.h
> +++ audit-2.3.2/lib/machinetab.h
> @@ -43,3 +43,5 @@ _S(MACH_ARMEB,   "armv7l")
>  #ifdef WITH_AARCH64
>  _S(MACH_AARCH64,   "aarch64"  )
>  #endif
> +_S(MACH_PARISC64, "parisc64" )
> +_S(MACH_PARISC,   "parisc"   )
> --- /dev/null
> +++ audit-2.3.2/lib/parisc_table.h
> @@ -0,0 +1,333 @@
> +_S(0, "restart_syscall")
> +_S(1, "exit")
> +_S(2, "fork")
> +_S(3, "read")
> +_S(4, "write")
> +_S(5, "open")
> +_S(6, "close")
> +_S(7, "waitpid")
> +_S(8, "creat")
> +_S(9, "link")
> +_S(10, "unlink")
> +_S(11, "execve")
> +_S(12, "chdir")
> +_S(13, "time")
> +_S(14, "mknod")
> +_S(15, "chmod")
> +_S(16, "lchown")
> +_S(17, "socket")
> +_S(18, "stat")
> +_S(19, "lseek")
> +_S(20, "getpid")
> +_S(21, "mount")
> +_S(22, "bind")
> +_S(23, "setuid")
> +_S(24, "getuid")
> +_S(25, "stime")
> +_S(26, "ptrace")
> +_S(27, "alarm")
> +_S(28, "fstat")
> +_S(29, "pause")
> +_S(30, "utime")
> +_S(31, "connect")
> +_S(32, "listen")
> +_S(33, "access")
> +_S(34, "nice")
> +_S(35, "accept")
> +_S(36, "sync")
> +_S(37, "kill")
> +_S(38, "rename")
> +_S(39, "mkdir")
> +_S(40, "rmdir")
> +_S(41, "dup")
> +_S(42, "pipe")
> +_S(43, "times")
> +_S(44, "getsockname")
> +_S(45, "brk")
> +_S(46, "setgid")
> +_S(47, "getgid")
> +_S(48, "signal")
> +_S(49, "geteuid")
> +_S(50, "getegid")
> +_S(51, "acct")
> +_S(52, "umount2")
> +_S(53, "getpeername")
> +_S(54, "ioctl")
> +_S(55, "fcntl")
> +_S(56, "socketpair")
> +_S(57, "setpgid")
> +_S(58, "send")
> +_S(59, "uname")
> +_S(60, "umask")
> +_S(61, "chroot")
> +_S(62, "ustat")
> +_S(63, "dup2")
> +_S(64, "getppid")
> +_S(65, "getpgrp")
> +_S(66, "setsid")
> +_S(67, "pivot_root")
> +_S(68, "sgetmask")
> +_S(69, "ssetmask")
> +_S(70, "setreuid")
> +_S(71, "setregid")
> +_S(72, "mincore")
> +_S(73, "sigpending")
> +_S(74, "sethostname")
> +_S(75, "setrlimit")
> +_S(76, "getrlimit")
> +_S(77, "getrusage")
> +_S(78, "gettimeofday")
> +_S(79, "settimeofday")
> +_S(80, "getgroups")
> +_S(81, "setgroups")
> +_S(82, "sendto")
> +_S(83, "symlink")
> +_S(84, "lstat")
> +_S(85, "readlink")
> +_S(86, "uselib")
> +_S(87, "swapon")
> +_S(88, "reboot")
> +_S(89, "mmap2")
> +_S(90, "mmap")
> +_S(91, "munmap")
> +_S(92, "truncate")
> +_S(93, "ftruncate")
> +_S(94, "fchmod")
> +_S(95, "fchown")
> +_S(96, "getpriority")
> +_S(97, "setpriority")
> +_S(98, "recv")
> +_S(99, "statfs")
> +_S(100, "fstatfs")
> +_S(101, "stat64")
> +_S(103, "syslog")
> +_S(104, "setitimer")
> +_S(105, "getitimer")
> +_S(106, "capget")
> +_S(107, "capset")
> +_S(108, "pread64")
> +_S(109, "pwrite64")
> +_S(110, "getcwd")
> +_S(111, "vhangup")
> +_S(112, "fstat64")
> +_S(113, "vfork")
> +_S(114, "wait4")
> +_S(115, "swapoff")
> +_S(116, "sysinfo")
> +_S(117, "shutdown")
> +_S(118, "fsync")
> +_S(119, "madvise")
> +_S(120, "clone")
> +_S(121, "setdomainname")
> +_S(122, "sendfile")
> +_S(123, "recvfrom")
> +_S(124, "adjtimex")
> +_S(125, "mprotect")
> +_S(126, "sigprocmask")
> +_S(127, "create_module")
> +_S(128, "init_module")
> +_S(129, "delete_module")
> +_S(130, "get_kernel_syms")
> +_S(131, "quotactl")
> +_S(132, "getpgid")
> +_S(133, "fchdir")
> +_S(134, "bdflush")
> +_S(135, "sysfs")
> +_S(136, "personality")
> +_S(137, "afs_syscall")
> +_S(138, "setfsuid")
> +_S(139, "setfsgid")
> +_S(140, "_llseek")
> +_S(141, "getdents")
> +_S(142, "_newselect")
> +_S(143, "flock")
> +_S(144, "msync")
> +_S(145, "readv")
> +_S(146, "writev")
> +_S(147, "getsid")
> +_S(148, "fdatasync")
> +_S(149, "_sysctl")
> +_S(150, "mlock")
> +_S(151, "munlock")
> +_S(152, "mlockall")
> +_S(153, "munlockall")
> +_S(154, "sched_setparam")
> +_S(155, "sched_getparam")
> +_S(156, "sched_setscheduler")
> +_S(157, "sched_getscheduler")
> +_S(158, "sched_yield")
> +_S(159, "sched_get_priority_max")
> +_S(160, "sched_get_priority_min")
> +_S(161, "sched_rr_get_interval")
> +_S(162, "nanosleep")
> +_S(163, "mremap")
> +_S(164, "setresuid")
> +_S(165, "getresuid")
> +_S(166, "sigaltstack")
> +_S(167, "query_module")
> +_S(168, "poll")
> +_S(169, "nfsservctl")
> +_S(170, "setresgid")
> +_S(171, "getresgid")
> +_S(172, "prctl")
> +_S(173, "rt_sigreturn")
> +_S(174, "rt_sigaction")
> +_S(175, "rt_sigprocmask")
> +_S(176, "rt_sigpending")
> +_S(177, "rt_sigtimedwait")
> +_S(178, "rt_sigqueueinfo")
> +_S(179, "rt_sigsuspend")
> +_S(180, "chown")
> +_S(181, "setsockopt")
> +_S(182, "getsockopt")
> +_S(183, "sendmsg")
> +_S(184, "recvmsg")
> +_S(185, "semop")
> +_S(186, "semget")
> +_S(187, "semctl")
> +_S(188, "msgsnd")
> +_S(189, "msgrcv")
> +_S(190, "msgget")
> +_S(191, "msgctl")
> +_S(192, "shmat")
> +_S(193, "shmdt")
> +_S(194, "shmget")
> +_S(195, "shmctl")
> +_S(196, "getpmsg")
> +_S(197, "putpmsg")
> +_S(198, "lstat64")
> +_S(199, "truncate64")
> +_S(200, "ftruncate64")
> +_S(201, "getdents64")
> +_S(202, "fcntl64")
> +_S(203, "attrctl")
> +_S(204, "acl_get")
> +_S(205, "acl_set")
> +_S(206, "gettid")
> +_S(207, "readahead")
> +_S(208, "tkill")
> +_S(209, "sendfile64")
> +_S(210, "futex")
> +_S(211, "sched_setaffinity")
> +_S(212, "sched_getaffinity")
> +_S(213, "set_thread_area")
> +_S(214, "get_thread_area")
> +_S(215, "io_setup")
> +_S(216, "io_destroy")
> +_S(217, "io_getevents")
> +_S(218, "io_submit")
> +_S(219, "io_cancel")
> +_S(220, "alloc_hugepages")
> +_S(221, "free_hugepages")
> +_S(222, "exit_group")
> +_S(223, "lookup_dcookie")
> +_S(224, "epoll_create")
> +_S(225, "epoll_ctl")
> +_S(226, "epoll_wait")
> +_S(227, "remap_file_pages")
> +_S(228, "semtimedop")
> +_S(229, "mq_open")
> +_S(230, "mq_unlink")
> +_S(231, "mq_timedsend")
> +_S(232, "mq_timedreceive")
> +_S(233, "mq_notify")
> +_S(234, "mq_getsetattr")
> +_S(235, "waitid")
> +_S(236, "fadvise64_64")
> +_S(237, "set_tid_address")
> +_S(238, "setxattr")
> +_S(239, "lsetxattr")
> +_S(240, "fsetxattr")
> +_S(241, "getxattr")
> +_S(242, "lgetxattr")
> +_S(243, "fgetxattr")
> +_S(244, "listxattr")
> +_S(245, "llistxattr")
> +_S(246, "flistxattr")
> +_S(247, "removexattr")
> +_S(248, "lremovexattr")
> +_S(249, "fremovexattr")
> +_S(250, "timer_create")
> +_S(251, "timer_settime")
> +_S(252, "timer_gettime")
> +_S(253, "timer_getoverrun")
> +_S(254, "timer_delete")
> +_S(255, "clock_settime")
> +_S(256, "clock_gettime")
> +_S(257, "clock_getres")
> +_S(258, "clock_nanosleep")
> +_S(259, "tgkill")
> +_S(260, "mbind")
> +_S(261, "get_mempolicy")
> +_S(262, "set_mempolicy")
> +_S(263, "vserver")
> +_S(264, "add_key")
> +_S(265, "request_key")
> +_S(266, "keyctl")
> +_S(267, "ioprio_set")
> +_S(268, "ioprio_get")
> +_S(269, "inotify_init")
> +_S(270, "inotify_add_watch")
> +_S(271, "inotify_rm_watch")
> +_S(272, "migrate_pages")
> +_S(273, "pselect6")
> +_S(274, "ppoll")
> +_S(275, "openat")
> +_S(276, "mkdirat")
> +_S(277, "mknodat")
> +_S(278, "fchownat")
> +_S(279, "futimesat")
> +_S(280, "fstatat64")
> +_S(281, "unlinkat")
> +_S(282, "renameat")
> +_S(283, "linkat")
> +_S(284, "symlinkat")
> +_S(285, "readlinkat")
> +_S(286, "fchmodat")
> +_S(287, "faccessat")
> +_S(288, "unshare")
> +_S(289, "set_robust_list")
> +_S(290, "get_robust_list")
> +_S(291, "splice")
> +_S(292, "sync_file_range")
> +_S(293, "tee")
> +_S(294, "vmsplice")
> +_S(295, "move_pages")
> +_S(296, "getcpu")
> +_S(297, "epoll_pwait")
> +_S(298, "statfs64")
> +_S(299, "fstatfs64")
> +_S(300, "kexec_load")
> +_S(301, "utimensat")
> +_S(302, "signalfd")
> +_S(303, "timerfd")
> +_S(304, "eventfd")
> +_S(305, "fallocate")
> +_S(306, "timerfd_create")
> +_S(307, "timerfd_settime")
> +_S(308, "timerfd_gettime")
> +_S(309, "signalfd4")
> +_S(310, "eventfd2")
> +_S(311, "epoll_create1")
> +_S(312, "dup3")
> +_S(313, "pipe2")
> +_S(314, "inotify_init1")
> +_S(315, "preadv")
> +_S(316, "pwritev")
> +_S(317, "rt_tgsigqueueinfo")
> +_S(318, "perf_event_open")
> +_S(319, "recvmmsg")
> +_S(320, "accept4")
> +_S(321, "prlimit64")
> +_S(322, "fanotify_init")
> +_S(323, "fanotify_mark")
> +_S(324, "clock_adjtime")
> +_S(325, "name_to_handle_at")
> +_S(326, "open_by_handle_at")
> +_S(327, "syncfs")
> +_S(328, "setns")
> +_S(329, "sendmmsg")
> +_S(330, "process_vm_readv")
> +_S(331, "process_vm_writev")
> +_S(332, "kcmp")
> +_S(333, "finit_module")
> --- audit-2.3.2.orig/lib/syscall-update.txt
> +++ audit-2.3.2/lib/syscall-update.txt
> @@ -18,3 +18,6 @@ For adding new arches, the following mig
>  cat unistd.h | grep '^#define __NR_' | tr -d ')' | tr 'NR+' ' ' | awk '{ printf "_S(%s, \"%s\")\n", $6, $3 }; '
>  
>  it will still need hand editing
> +
> +for parisc:
> +cat /usr/include/hppa-linux-gnu/asm/unistd.h  | grep '^#define __NR_'   | grep \(__NR_Linux | sed  "s/#define *__NR_//g" | tr -d ")" | awk '{ printf "_S(%s, \"%s\")\n", $4, $1 };'
> --- audit-2.3.2.orig/lib/test/lookup_test.c
> +++ audit-2.3.2/lib/test/lookup_test.c
> @@ -222,6 +222,23 @@ test_ppc_table(void)
>  }
>  
>  static void
> +test_parisc_table(void)
> +{
> +	static const struct entry t[] = {
> +#include "../parisc_table.h"
> +	};
> +
> +	printf("Testing parisc_table...\n");
> +#define I2S(I) audit_syscall_to_name((I), MACH_PARISC)
> +#define S2I(S) audit_name_to_syscall((S), MACH_PARISC)
> +	TEST_I2S(0);
> +	TEST_S2I(-1);
> +#undef I2S
> +#undef S2I
> +}
> +
> +
> +static void
>  test_s390_table(void)
>  {
>  	static const struct entry t[] = {
> @@ -415,6 +432,7 @@ main(void)
>  	test_i386_table();
>  	test_ia64_table();
>  	test_ppc_table();
> +	test_parisc_table();
>  	test_s390_table();
>  	test_s390x_table();
>  	test_x86_64_table();
> 




More information about the Linux-audit mailing list