]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-use-private-xdr-in-kernel-to-avoid-conflicts-over-memory-ownership-20020608
authorDerrick Brashear <shadow@dementia.org>
Sat, 8 Jun 2002 08:45:49 +0000 (08:45 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 8 Jun 2002 08:45:49 +0000 (08:45 +0000)
allocating memory from a pool and then having it be freed out from under you is unwise

(cherry picked from commit b80ae7d78cd944420c54567030e57c4f68a3d482)

20 files changed:
src/afs/afs_callback.c
src/afs/sysincludes.h
src/fsint/afsaux.c
src/fsint/afsint.xg
src/libafs/Makefile.common
src/libafs/MakefileProto.AIX.in
src/libafs/MakefileProto.DARWIN.in
src/libafs/MakefileProto.FBSD.in
src/libafs/MakefileProto.HPUX.in
src/libafs/MakefileProto.IRIX.in
src/libafs/MakefileProto.LINUX.in
src/libafs/MakefileProto.OBSD.in
src/libafs/MakefileProto.SOLARIS.in
src/rx/rx_kcommon.h
src/rx/xdr.c
src/rx/xdr.h
src/rx/xdr_rx.c
src/rxgen/rpc_main.c
src/rxkad/rxkad_client.c
src/rxkad/rxkad_common.c

index 3454bfa10af836a8b41475fba4cbbdfa6c4ff299..30bc1c478e689a69193da49231327fcb51734df4 100644 (file)
@@ -1155,7 +1155,7 @@ int SRXAFSCB_GetCellServDB(
       afs_PutCell(tcell, READ_LOCK);
     }
 
-    t_name = (char *)rxi_Alloc(i+1);
+    t_name = (char *)afs_osi_Alloc(i+1);
     if (t_name == NULL) {
         ReleaseReadLock(&afs_xcell);
 #ifdef RX_ENABLE_LOCKS
@@ -1234,7 +1234,7 @@ int SRXAFSCB_GetLocalCell(
        plen = strlen(p_name);
     else
        plen = 0;
-    t_name = (char *)rxi_Alloc(plen+1);
+    t_name = (char *)afs_osi_Alloc(plen+1);
     if (t_name == NULL) {
         ReleaseReadLock(&afs_xcell);
 #ifdef RX_ENABLE_LOCKS
@@ -1340,7 +1340,7 @@ int SRXAFSCB_GetCacheConfig(
      * Currently only support version 1
      */
     allocsize = sizeof(cm_initparams_v1);
-    t_config = (afs_uint32 *)rxi_Alloc(allocsize);
+    t_config = (afs_uint32 *)afs_osi_Alloc(allocsize);
     if (t_config == NULL) {
 #ifdef RX_ENABLE_LOCKS
        AFS_GUNLOCK();
index 14c42fbd7eb97983cddce1657c63795ba4717a46..197f68dcce84f862c82a8fc9f749f3d1144cf9ba 100644 (file)
@@ -268,7 +268,7 @@ struct vfspage;                     /* for vnode.h compiler warnings */
 #endif /* AFS_SUN5_ENV */
 
 #include "../rpc/types.h"
-#include "../rpc/xdr.h"
+#include "../rx/xdr.h"
 
 #ifdef AFS_AIX32_ENV
 #  include "net/spl.h"
@@ -363,7 +363,7 @@ struct vfspage;                     /* for vnode.h compiler warnings */
 #undef register
 #endif /* AFS_ALPHA_ENV */
 
-#include <rpc/xdr.h>
+#include <rx/xdr.h>
 #include <sys/proc.h>
 #include <sys/ioctl.h>
 
index 562efdfbebac99015d76f0d56cbb718278a80fdc..af69e80812b6cb6ea775d96c7d1af5e006e3249a 100644 (file)
@@ -28,7 +28,7 @@ RCSID("$Header$");
 #else
 #include "../h/types.h"
 #include "../rpc/types.h"
-#include "../rpc/xdr.h"
+#include "../rx/xdr.h"
 #endif
 #if !defined(AFS_ALPHA_ENV)
 #ifndef        XDR_GETINT32
@@ -38,9 +38,6 @@ RCSID("$Header$");
 #define        XDR_PUTINT32    XDR_PUTLONG
 #endif
 #endif
-#ifndef AFS_LINUX22_ENV
-#include "../rpc/auth.h"
-#endif
 #endif /* defined(UKERNEL) */
 #include "../afsint/afsint.h"
 #else /* KERNEL */
index 549b5badf8cdef840b242ad4356d0461bd876727..76fd54c4e602d0e03dd6f440973d765c9bf38683 100644 (file)
@@ -45,7 +45,7 @@ typedef afs_int32 ViceDataType;
 %#define SymbolicLink 3 
 
 %#ifdef        KERNEL
-%#define       xdr_array(a,b,c,d,e,f)  xdr_arrayN(a,b,c,d,e,f)
+%#define       afs_xdr_array(a,b,c,d,e,f)      afs_xdr_arrayN(a,b,c,d,e,f)
 %#endif
 
 struct BD {
index 9f1afd2ac1f60aa0e99c3a55c4bd5ae1757d1844..d3c68d1cca781f9fc1c5f989d7d6c71c6d68c09a 100644 (file)
@@ -91,7 +91,9 @@ AFSAOBJS = \
        afs_volume.o \
        afsaux.o                \
        Kvice.xdr.o     \
+       xdr_array.o     \
        xdr_arrayn.o    \
+       xdr_int64.o     \
        Kvice.cs.o      \
        fcrypt.o                \
        rx.o            \
@@ -118,6 +120,7 @@ AFSAOBJS = \
        rxkad_client.o  \
        rxkad_common.o  \
        xdr_afsuuid.o   \
+       xdr.o           \
        afs_uuid.o $(AFS_OS_OBJS)
 
 # These next two allow nfs and nonfs builds to occur in the same directory.
@@ -307,6 +310,12 @@ afsaux.o: $(AFSINT)/afsaux.c
        $(CRULE1);
 xdr_arrayn.o: $(RX)/xdr_arrayn.c
        $(CRULE1);
+xdr_array.o: $(RX)/xdr_array.c
+       $(CRULE1);
+xdr_int64.o: $(RX)/xdr_int64.c
+       $(CRULE1);
+xdr.o: $(RX)/xdr.c
+       $(CRULE1);
 Kvldbint.cs.o: $(AFSINT)/Kvldbint.cs.c
        $(CRULE1);
 Kvldbint.xdr.o: $(AFSINT)/Kvldbint.xdr.c
index 0d7c3ab4e8b48357cdd03ee14674a2d053d78bd2..21d2e702fe54778d2a9c08ca9b376f96a037c54b 100644 (file)
@@ -37,10 +37,7 @@ AFS_OS_OBJS = \
        osi_misc.o \
        osi_sleep.o \
        osi_timeout.o \
-       osi_vm.o \
-       xdr.o \
-       xdr_array.o \
-       xdr_int64.o
+       osi_vm.o
 
 AFSNOIAUTHOBJS = \
        afs_call.o \
@@ -157,14 +154,6 @@ dest_libafs: $(DEST_LIBAFS) $(DEST_LIBAFSIAUTH)
 
 # Object build rules:
 # Common objects
-xdr.o: $(RX)/xdr.c
-       $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
-
-xdr_array.o: $(RX)/xdr_array.c
-       $(CRULE1)
-
 osi_assem.o:   ${AFS}/osi_assem.s
        ${AS} -o osi_assem.o ${AFS}/osi_assem.s
 osi_config.o: $(AFS)/osi_config.c
index 4d4a949042446d2731f988697c82fdafb836b0d1..39141034ed184f0ac43de6b84330d20bff552177 100644 (file)
@@ -34,10 +34,7 @@ AFS_OS_OBJS = \
        osi_sleep.o \
        osi_vm.o \
        osi_vnodeops.o \
-       osi_module.o \
-       xdr.o \
-       xdr_array.o \
-       xdr_int64.o
+       osi_module.o
 
 
 #AFS_OS_NFSOBJS = osi_vfsops_nfs.o
@@ -136,9 +133,3 @@ osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
 osi_module.o: $(AFS)/osi_module.c
        $(CRULE1)
-xdr.o: $(RX)/xdr.c
-       $(CRULE1)
-xdr_array.o: $(RX)/xdr_array.c
-       $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
index ef84b2263657274b421cd949d747d98dba1e8649..8f74f1a161957ec4bcc387cdc7c4cd670802e106 100644 (file)
@@ -30,8 +30,7 @@ AFS_OS_OBJS = \
        osi_misc.o \
        osi_sleep.o \
        osi_vm.o \
-       osi_vnodeops.o \
-       xdr_int64.o
+       osi_vnodeops.o
 
 AFS_OS_NFSOBJS = \
        osi_vfsops_nfs.o
@@ -148,5 +147,3 @@ osi_vm.o: $(AFS)/osi_vm.c
        $(CRULE1)
 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
index ab50ceb3c97e64cc0b37211c1ddd5644e33112d7..6562701d6f30cfb60ae2ad3bcb618eb072064b75 100644 (file)
@@ -36,8 +36,7 @@ AFS_OS_OBJS = \
        osi_misc.o \
        osi_sleep.o \
        osi_vnodeops.o \
-       osi_vm.o \
-       xdr_int64.o
+       osi_vm.o
 
 AFS_OS_NFSOBJS = \
        osi_vfsops_nfs.o
@@ -196,8 +195,6 @@ osi_vm.o: $(AFS)/osi_vm.c
        $(CRULE1)
 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
 
 # This is a list of header files compiled with the -g option. It allows
 # examination of AFS structures in a dump.
index 1d9c6b1a8d0cdd891b199a56525759cfe3f2ac55..a3709806c2c3e6e8af200ec64b3847c2128ac3aa 100644 (file)
@@ -37,8 +37,7 @@ AFS_OS_OBJS = \
        osi_misc.o \
        osi_sleep.o \
        osi_vm.o \
-       osi_vnodeops.o \
-       xdr_int64.o
+       osi_vnodeops.o
 
 AFS_OS_NFSOBJS = \
        osi_vfsops_nfs.o
@@ -506,5 +505,3 @@ osi_vm.o: $(AFS)/osi_vm.c
        $(CRULE1)
 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
index 201aa538fa12fc2efd9b762d72d5d0bf732fc486..c2fb4b21cd41eb6df939bad13e4651e407e17aa5 100644 (file)
@@ -42,10 +42,7 @@ AFS_OS_OBJS = \
        osi_sysctl.o \
        osi_vfsops.o \
        osi_vm.o \
-       osi_vnodeops.o \
-       xdr.o \
-       xdr_array.o \
-       xdr_int64.o
+       osi_vnodeops.o
 
 AFS_OS_NFSOBJS =
 
@@ -312,9 +309,3 @@ osi_vm.o: $(AFS)/osi_vm.c
        $(CRULE1)
 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
-xdr.o: $(RX)/xdr.c
-       $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
-xdr_array.o: $(RX)/xdr_array.c
-       $(CRULE1)
index 31e172c9e0e265ee71898d1a2a0bbeca797ae51e..157b4439d0bdcb99ee6537e3f06909262bbfb44a 100644 (file)
@@ -30,8 +30,7 @@ AFS_OS_OBJS = \
        osi_misc.o \
        osi_sleep.o \
        osi_vm.o \
-       osi_vnodeops.o \
-       xdr_int64.o
+       osi_vnodeops.o
 
 AFS_OS_NFSOBJS = \
        osi_vfsops_nfs.o
@@ -148,5 +147,3 @@ osi_vm.o: $(AFS)/osi_vm.c
        $(CRULE1)
 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
index afc4dbb5951bb5a1c3ba2ef4acc682c601439134..fac745683dfd9248616a5d630870aca744293103 100644 (file)
@@ -34,8 +34,7 @@ AFS_OS_OBJS = \
        osi_file.o \
        osi_sleep.o \
        osi_vm.o \
-       osi_vnodeops.o \
-       xdr_int64.o
+       osi_vnodeops.o
 
 AFS_OS_NFSOBJS = \
        osi_vfsops_nfs.o
@@ -198,5 +197,3 @@ osi_vm.o: $(AFS)/osi_vm.c
        $(CRULE1)
 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
        $(CRULE1)
-xdr_int64.o: $(RX)/xdr_int64.c
-       $(CRULE1)
index 92b2bc33265d8ba97a6f6d84b6d7b075b6992a64..23d48adf1b85e0b76e64db3637a8539cf6ab0bfd 100644 (file)
@@ -90,9 +90,7 @@ struct coda_inode_info {};
 #include "../afs/afs_osi.h"
 #include "../rx/rx_kmutex.h"
 #include "../afs/lock.h"
-#ifndef AFS_LINUX22_ENV
-#include "../rpc/xdr.h"
-#endif
+#include "../rx/xdr.h"
 #include "../rx/rx.h"
 #include "../rx/rx_globals.h"
 #include "../afs/longc_procs.h"
index 2aa70b9207593754a55669e49cbc5e3a260c60cc..8ca8a4aec794d97ce6609096140006db5e166943 100644 (file)
@@ -129,22 +129,22 @@ xdr_u_int(xdrs, up)
        return (FALSE);
 }
 
-
+#else
 /*
  * XDR afs_int32 integers
  * same as xdr_u_long - open coded to save a proc call!
  */
 bool_t
-xdr_long(xdrs, lp)
+xdr_int(xdrs, lp)
        register XDR *xdrs;
-       long *lp;
+       int *lp;
 {
 
        if (xdrs->x_op == XDR_ENCODE)
-               return (XDR_PUTINT32(xdrs, lp));
+               return (XDR_PUTINT32(xdrs, (long *)lp));
 
        if (xdrs->x_op == XDR_DECODE)
-               return (XDR_GETINT32(xdrs, lp));
+               return (XDR_GETINT32(xdrs, (long *)lp));
 
        if (xdrs->x_op == XDR_FREE)
                return (TRUE);
@@ -157,38 +157,37 @@ xdr_long(xdrs, lp)
  * same as xdr_long - open coded to save a proc call!
  */
 bool_t
-xdr_u_long(xdrs, ulp)
+xdr_u_int(xdrs, ulp)
        register XDR *xdrs;
-       u_long *ulp;
+       int *ulp;
 {
 
        if (xdrs->x_op == XDR_DECODE)
                return (XDR_GETINT32(xdrs, (long *)ulp));
-
        if (xdrs->x_op == XDR_ENCODE)
                return (XDR_PUTINT32(xdrs, (long *)ulp));
-
        if (xdrs->x_op == XDR_FREE)
                return (TRUE);
-
        return (FALSE);
 }
-#else
+#endif
+
+
 /*
  * XDR afs_int32 integers
  * same as xdr_u_long - open coded to save a proc call!
  */
 bool_t
-xdr_int(xdrs, lp)
+xdr_long(xdrs, lp)
        register XDR *xdrs;
-       int *lp;
+       long *lp;
 {
 
        if (xdrs->x_op == XDR_ENCODE)
-               return (XDR_PUTINT32(xdrs, (long *)lp));
+               return (XDR_PUTINT32(xdrs, lp));
 
        if (xdrs->x_op == XDR_DECODE)
-               return (XDR_GETINT32(xdrs, (long *)lp));
+               return (XDR_GETINT32(xdrs, lp));
 
        if (xdrs->x_op == XDR_FREE)
                return (TRUE);
@@ -201,20 +200,23 @@ xdr_int(xdrs, lp)
  * same as xdr_long - open coded to save a proc call!
  */
 bool_t
-xdr_u_int(xdrs, ulp)
+xdr_u_long(xdrs, ulp)
        register XDR *xdrs;
-       int *ulp;
+       u_long *ulp;
 {
 
        if (xdrs->x_op == XDR_DECODE)
                return (XDR_GETINT32(xdrs, (long *)ulp));
+
        if (xdrs->x_op == XDR_ENCODE)
                return (XDR_PUTINT32(xdrs, (long *)ulp));
+
        if (xdrs->x_op == XDR_FREE)
                return (TRUE);
+
        return (FALSE);
 }
-#endif
+
 /*
  * XDR chars
  */
index c74a8f0f72fb92918d0145529595f0aec539332d..68697450981e0079acf54bcbf1e1058cf5fea84e 100644 (file)
 void *afs_osi_Alloc();
 #define        osi_alloc               afs_osi_Alloc
 #define        osi_free                afs_osi_Free
+
+#ifndef UKERNEL
+#define xdr_void afs_xdr_void
+#define xdr_int afs_xdr_int
+#define xdr_u_int afs_xdr_u_int
+#define xdr_short afs_xdr_short
+#define xdr_u_short afs_xdr_u_short
+#define xdr_long afs_xdr_long
+#define xdr_u_long afs_xdr_u_long
+#define xdr_char afs_xdr_char
+#define xdr_u_char afs_xdr_u_char
+#define xdr_bool afs_xdr_bool
+#define xdr_enum afs_xdr_enum
+#define xdr_array afs_xdr_array
+#define xdr_arrayN afs_xdr_arrayN
+#define xdr_bytes afs_xdr_bytes
+#define xdr_opaque afs_xdr_opaque
+#define xdr_string afs_xdr_string
+#define xdr_union afs_xdr_union
+#define xdr_float afs_xdr_float
+#define xdr_double afs_xdr_double
+#define xdr_reference afs_xdr_reference
+#define xdr_wrapstring afs_xdr_wrapstring
+#define xdr_vector afs_xdr_vector
+#define xdr_int64 afs_xdr_int64
+#define xdr_uint64 afs_xdr_uint64
+#endif
 #endif
 #ifndef major          /* ouch! */
 #include <sys/types.h>
index d4942f747445f09ac3104bb9df339f3969f9d59a..5ef8876b5b393230a6b5335fc5a585bc0e49db7d 100644 (file)
@@ -45,7 +45,7 @@ RCSID("$Header$");
 #define u_quad_t __u_quad_t
 #endif
 #endif
-#include "../rpc/xdr.h"
+#include "../rx/xdr.h"
 #include "../netinet/in.h"
 #else /* !UKERNEL */
 #include "../afs/sysincludes.h"
index 0b003b8af313d64fc3c0e61b6ac95af5a3bc2925..d1f450c3722630fbcd6204be6b05aaf7bc4ac3c7 100644 (file)
@@ -436,14 +436,7 @@ c_output(infile, define, extend, outfile, append)
            f_print(fout, "#include \"../h/stat.h\"\n");
            f_print(fout, "#include \"../netinet/in.h\"\n");
            f_print(fout, "#include \"../h/time.h\"\n");
-           f_print(fout, "#ifndef AFS_LINUX22_ENV\n");
-           f_print(fout, "#include \"../rpc/types.h\"\n");
-           f_print(fout, "#endif /* AFS_LINUX22_ENV */\n");
-           f_print(fout, "#ifdef AFS_LINUX22_ENV\n");
            f_print(fout, "#include \"../rx/xdr.h\"\n");
-           f_print(fout, "#else /* AFS_LINUX22_ENV */\n");
-           f_print(fout, "#include \"../rpc/xdr.h\"\n");
-           f_print(fout, "#endif /* AFS_LINUX22_ENV */\n");
            f_print(fout, "#include \"../afsint/rxgen_consts.h\"\n");
        } else {
            f_print(fout, "#include <rx/xdr.h>\n");
@@ -570,13 +563,7 @@ h_output(infile, define, extend, outfile, append)
        f_print(fout, "#define u_quad_t __u_quad_t\n");
        f_print(fout, "#endif\n");
        f_print(fout, "#endif\n");
-       f_print(fout, "#ifdef AFS_LINUX22_ENV\n");
        f_print(fout, "#include \"../rx/xdr.h\"\n");
-       f_print(fout, "#else /* AFS_LINUX22_ENV */\n");
-       f_print(fout, "extern bool_t xdr_int64();\n");
-       f_print(fout, "extern bool_t xdr_uint64();\n");
-       f_print(fout, "#include \"../rpc/xdr.h\"\n");
-       f_print(fout, "#endif /* AFS_LINUX22_ENV */\n");
        f_print(fout, "#endif /* XDR_GETLONG */\n");
        f_print(fout, "#endif   /* UKERNEL */\n");
        f_print(fout, "#include \"../afsint/rxgen_consts.h\"\n");
@@ -752,11 +739,7 @@ int append;
            f_print(fout, "#include \"../netinet/in.h\"\n");
            f_print(fout, "#include \"../h/time.h\"\n");
            f_print(fout, "#include \"../rpc/types.h\"\n");
-           f_print(fout, "#ifdef AFS_LINUX22_ENV\n");
            f_print(fout, "#include \"../rx/xdr.h\"\n");
-           f_print(fout, "#else /* AFS_LINUX22_ENV */\n");
-           f_print(fout, "#include \"../rpc/xdr.h\"\n");
-           f_print(fout, "#endif /* AFS_LINUX22_ENV */\n");
            f_print(fout, "#include \"../afsint/rxgen_consts.h\"\n");
            f_print(fout, "#include \"../afs/afs_osi.h\"\n");
            f_print(fout, "#include \"../rx/rx.h\"\n");
@@ -827,11 +810,7 @@ int append;
            f_print(fout, "#include \"../netinet/in.h\"\n");
            f_print(fout, "#include \"../h/time.h\"\n");
            f_print(fout, "#include \"../rpc/types.h\"\n");
-           f_print(fout, "#ifdef AFS_LINUX22_ENV\n");
            f_print(fout, "#include \"../rx/xdr.h\"\n");
-           f_print(fout, "#else /* AFS_LINUX22_ENV */\n");
-           f_print(fout, "#include \"../rpc/xdr.h\"\n");
-           f_print(fout, "#endif /* AFS_LINUX22_ENV */\n");
            f_print(fout, "#include \"../afsint/rxgen_consts.h\"\n");
            f_print(fout, "#include \"../afs/afs_osi.h\"\n");
            f_print(fout, "#include \"../rx/rx.h\"\n");
index f12d5315c3f269fb3f2da7a1811623b477640008..637ac769f03fd8c4dace69ee4bcf2511ed3b4e53 100644 (file)
@@ -34,7 +34,7 @@ RCSID("$Header$");
 #endif /* !UKERNEL */
 #ifndef AFS_LINUX22_ENV
 #include "../rpc/types.h"
-#include "../rpc/xdr.h"
+#include "../rx/xdr.h"
 #endif
 #include "../rx/rx.h"
 #else /* ! KERNEL */
index 96f404acced2d65594f5522c45d8e53a17a33ccb..7f7aab4b8cd1a92808fdd9ee2e524d29071cb0d6 100644 (file)
@@ -29,7 +29,7 @@ RCSID("$Header$");
 #include "../h/time.h"
 #ifndef AFS_LINUX22_ENV
 #include "../rpc/types.h"
-#include "../rpc/xdr.h"
+#include "../rx/xdr.h"
 #endif /* AFS_LINUX22_ENV */
 #else /* !UKERNEL */
 #include "../afs/sysincludes.h"