[OpenAFS] Re: 1.2.11 openafs - RedHat Update 3 x86_64

Troy Dawson dawson@fnal.gov
Tue, 21 Sep 2004 09:29:07 -0500


Derrick J Brashear wrote
> On Mon, 20 Sep 2004, Troy Dawson wrote:
> 
>>> gcc  -O2 -fomit-frame-pointer -fno-strength-reduce -fno-strict-aliasing 
>>> -fno-common -pipe -mcmodel=kernel -D__KERNEL__ -DKERNEL -D_KERNEL -DMODULE 
>>> -DREDHAT_FIX-I. -I../ -I/usr/src/redhat/BUILD/openafs-1.2.11/src/config -c 
>>> ../afs/osi_groups.c
>>> ../afs/osi_groups.c:181: syntax error before "old_gid_t"
>>> ../afs/osi_groups.c:182: syntax error before "old_gid_t"
> 
> 
> i'll guess old_gid_t isn't defined for x86_64. switch to gid_t and see 
> what happens.
> 

Hi Derrick and all,
I was directed to an earlier e-mail which I had overlooked.

http://www.mail-archive.com/openafs-info@openafs.org/msg08736.html

and Jaroslaw Polok sent me the following

To the spec file add

...
Patch205: openafs-1.2.11-no_old_gid_t.patch
...

...
%ifarch x86_64
%patch205 -p1
%endif
...

and openafs-1.2.11-no_old_gid_t.patch is
-----------------------
--- openafs-1.2.11/src/afs/LINUX/osi_module.c.org	2004-09-21 
11:05:30.000000000 +0200
+++ openafs-1.2.11/src/afs/LINUX/osi_module.c	2004-09-21 
11:07:31.000000000 +0200
@@ -92,7 +92,7 @@
  #endif

  static void *ia32_ni_syscall = 0;
-asmlinkage long (*sys32_setgroupsp)(int gidsetsize, old_gid_t *grouplist);
+asmlinkage long (*sys32_setgroupsp)(int gidsetsize, u16 *grouplist);
  #if defined(__NR_ia32_setgroups32)
  asmlinkage long (*sys32_setgroups32p)(int gidsetsize, gid_t *grouplist);
  #endif /* __NR_ia32_setgroups32 */
--- openafs-1.2.11/src/afs/LINUX/osi_groups.c.org	2004-09-21 
10:56:15.000000000 +0200
+++ openafs-1.2.11/src/afs/LINUX/osi_groups.c	2004-09-21 
11:05:24.000000000 +0200
@@ -178,8 +178,8 @@

  #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_AMD64_LINUX20_ENV)
  /* Intercept the uid16 system call as used by 32bit programs. */
-extern long (*sys32_setgroupsp)(int gidsetsize, old_gid_t *grouplist);
-asmlinkage long afs32_xsetgroups(int gidsetsize, old_gid_t *grouplist)
+extern long (*sys32_setgroupsp)(int gidsetsize, u16 *grouplist);
+asmlinkage long afs32_xsetgroups(int gidsetsize, u16 *grouplist)
  {
      long code;
      cred_t *cr = crref();
---------------------------------

I have tested this and it works for the x86_64 stuff.
Thanks for the help everyone.
Troy

-- 
__________________________________________________
Troy Dawson  dawson@fnal.gov  (630)840-6468
Fermilab  ComputingDivision/CSS  CSI Group
__________________________________________________