DARWIN: Make crfree() an inline function
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 30 Mar 2012 18:09:36 +0000 (19:09 +0100)
committerStephan Wiesand <stephan.wiesand@desy.de>
Fri, 20 Dec 2013 15:07:56 +0000 (07:07 -0800)
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.

Reviewed-on: http://gerrit.openafs.org/7073
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit 1d8937b860509fcaabb041bc14faf7aa3023f3c9)

Reviewed-on: http://gerrit.openafs.org/10548
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
(cherry picked from commit 931d1a8bea393ba3df69b163cb4d05c35f3c948e)

Change-Id: Iba1def8ae4004e918185109767bd8a0f0a263813
Reviewed-on: http://gerrit.openafs.org/10607
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

src/afs/DARWIN/osi_machdep.h

index 5a615cb..ae6e02e 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