DARWIN: Make crfree() an inline function
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 30 Mar 2012 18:09:36 +0000 (19:09 +0100)
committerDerrick Brashear <shadow@dementix.org>
Sat, 7 Apr 2012 12:05:49 +0000 (05:05 -0700)
On Darwin 100, we have
   #define crfree(X) kauth_cred_unref(&X)
which expands in one place to
   kauth_cred_unref(&(afs_ucred_t *)avc->linkData)

clang warns about this in -Werror mode, because arguments to the
address-of operator must be lvalues.

To fix this make crfree an inline function, which will then let us do
the indirection required.

Change-Id: Ic5adb63dcdc11e04c1e428c32e85f33a987fcf42
Reviewed-on: http://gerrit.openafs.org/7073
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

src/afs/DARWIN/osi_machdep.h

index e186d3a..eff69b1 100644 (file)
@@ -33,6 +33,7 @@ typedef unsigned short etap_event_t;
 #include <sys/lock.h>
 #include <sys/user.h>
 #include <sys/vnode.h>
+#include <sys/kauth.h>
 #endif
 #include <kern/thread.h>
 
@@ -104,7 +105,7 @@ enum vcexcl { EXCL, NONEXCL };
 #define crref kauth_cred_get_with_ref
 #define crhold kauth_cred_ref
 #ifdef AFS_DARWIN100_ENV
-#define crfree(X) kauth_cred_unref(&X)
+static inline void crfree(kauth_cred_t X) { kauth_cred_unref(&X); }
 #else
 #define crfree kauth_cred_rele
 #endif