From 3a48ae3e243b695ac5bb3b35aa3b09641db1af3b Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Fri, 14 Aug 2009 12:06:03 -0400 Subject: [PATCH] macos 10.6 updates cope with mixed 32/64 environment provided by macos 10.6. build needed stuff for audit logs in shlibafsauthent. Reviewed-on: http://gerrit.openafs.org/310 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afs/DARWIN/osi_misc.c | 30 ++++++++++++++---------------- src/afs/DARWIN/osi_module.c | 3 +-- src/afs/afs_syscall.c | 22 +++++++++++++++++++++- src/cf/osconf.m4 | 2 +- src/config/param.x86_darwin_100.h | 1 + src/shlibafsauthent/Makefile.in | 8 +++++++- 6 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/afs/DARWIN/osi_misc.c b/src/afs/DARWIN/osi_misc.c index 059e4ed49..f990fab8f 100644 --- a/src/afs/DARWIN/osi_misc.c +++ b/src/afs/DARWIN/osi_misc.c @@ -189,22 +189,20 @@ extern int afs3_syscall(struct proc *p, void *data, unsigned long *retval); int afs_cdev_ioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct proc *p) { - unsigned long retval=0; - int code; - struct afssysargs *a = (struct afssysargs *)data; - if (proc_is64bit(p)) - return EINVAL; - - if (cmd != VIOC_SYSCALL) { - return EINVAL; - } - - code=afs3_syscall(p, data, &retval); - if (code) - return code; - if (retval && a->syscall != AFSCALL_CALL && a->param1 != AFSOP_CACHEINODE) { printf("SSCall(%d,%d) is returning non-error value %d\n", a->syscall, a->param1, retval); } - a->retval = retval; - return 0; + unsigned long retval=0; + int code; + struct afssysargs *a = (struct afssysargs *)data; + + if (cmd != VIOC_SYSCALL) { + return EINVAL; + } + + code=afs3_syscall(p, data, &retval); + if (code) + return code; + if (retval && a->syscall != AFSCALL_CALL && a->param1 != AFSOP_CACHEINODE) { printf("SSCall(%d,%d) is returning non-error value %d\n", a->syscall, a->param1, retval); } + a->retval = retval; + return 0; } #endif diff --git a/src/afs/DARWIN/osi_module.c b/src/afs/DARWIN/osi_module.c index 77bc0e0ad..5991b06b9 100644 --- a/src/afs/DARWIN/osi_module.c +++ b/src/afs/DARWIN/osi_module.c @@ -53,8 +53,7 @@ afs_modload(struct kmod_info *ki, void *data) afs_vfsentry.vfe_vfsops = &afs_vfsops; afs_vfsentry.vfe_vopcnt = 2; afs_vfsentry.vfe_opvdescs = afs_vnodeop_opv_desc_list; - /* We may be 64bit ready too (VFS_TBL64BITREADY) */ - afs_vfsentry.vfe_flags = VFS_TBLTHREADSAFE|VFS_TBLNOTYPENUM; + afs_vfsentry.vfe_flags = VFS_TBLTHREADSAFE|VFS_TBLNOTYPENUM|VFS_TBL64BITREADY; if (vfs_fsadd(&afs_vfsentry, &afs_vfstable)) { printf("AFS: vfs_fsadd failed. aborting\n"); MUTEX_FINISH(); diff --git a/src/afs/afs_syscall.c b/src/afs/afs_syscall.c index de3877d4b..c14c84ef7 100644 --- a/src/afs/afs_syscall.c +++ b/src/afs/afs_syscall.c @@ -48,6 +48,16 @@ int copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst) { int code; +#if defined(AFS_DARWIN100_ENV) + struct afs_ioctl32 dst32; + + if (!proc_is64bit(current_proc())) { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + afs_ioctl32_to_afs_ioctl(&dst32, dst); + return code; + } +#endif #if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) struct afs_ioctl32 dst32; @@ -322,7 +332,7 @@ struct iparam32 { }; -#if defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)) +#if defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)) || defined(NEED_IOCTL32) static void iparam32_to_iparam(const struct iparam32 *src, struct iparam *dst) { @@ -343,6 +353,16 @@ copyin_iparam(caddr_t cmarg, struct iparam *dst) { int code; +#if defined(AFS_DARWIN100_ENV) + struct iparam32 dst32; + + if (!proc_is64bit(current_proc())) { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + iparam32_to_iparam(&dst32, dst); + return code; + } +#endif #if defined(AFS_HPUX_64BIT_ENV) struct iparam32 dst32; diff --git a/src/cf/osconf.m4 b/src/cf/osconf.m4 index 4a4e69a93..5d2f0278c 100644 --- a/src/cf/osconf.m4 +++ b/src/cf/osconf.m4 @@ -583,7 +583,7 @@ case $AFS_SYSNAME in EXTRA_VLIBOBJS="fstab.o" SHLIB_LINKER="${MT_CC} -dynamiclib" SHLIB_SUFFIX="dylib" - RANLIB="ranlib -c" + RANLIB="ranlib" ;; ppc_linux*) diff --git a/src/config/param.x86_darwin_100.h b/src/config/param.x86_darwin_100.h index de9390139..b45d6fd51 100644 --- a/src/config/param.x86_darwin_100.h +++ b/src/config/param.x86_darwin_100.h @@ -32,6 +32,7 @@ #define AFS_NAMEI_ENV 1 #define DARWIN_REFBASE 3 #define AFS_CACHE_VNODE_PATH +#define NEED_IOCTL32 /* File system entry (used if mount.h doesn't define MOUNT_AFS */ #define AFS_MOUNT_AFS "afs" diff --git a/src/shlibafsauthent/Makefile.in b/src/shlibafsauthent/Makefile.in index 986a34911..cc630714c 100644 --- a/src/shlibafsauthent/Makefile.in +++ b/src/shlibafsauthent/Makefile.in @@ -32,7 +32,7 @@ RXKAD = ../rxkad PTSERVER = ../ptserver SYS = ../sys -AUDITOBJS = audit.o +AUDITOBJS = audit.o audit-file.o audit-sysvmq.o AUTHOBJS = \ cellconfig.o \ @@ -143,6 +143,12 @@ libafsauthent_pic.a: ${LIBOBJS} audit.o: ${AUDIT}/audit.c ${CCRULE} +audit-file.o: ${AUDIT}/audit-file.c + ${CCRULE} + +audit-sysvmq.o: ${AUDIT}/audit-sysvmq.c + ${CCRULE} + cellconfig.o: ${AUTH}/cellconfig.c ${CCRULE} -- 2.39.5