]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/ceph/mds_client.c
Btrfs: fix btrfs_is_free_space_inode to recognize btree inode
[karo-tx-linux.git] / fs / ceph / mds_client.c
index 462281742aefd3eaf3ddb1698016a6081e4faf67..200bc87eceb1cc417a1caa1a73e264cde79dda78 100644 (file)
@@ -3395,15 +3395,18 @@ out:
 /*
  * authentication
  */
-static int get_authorizer(struct ceph_connection *con,
-                         void **buf, int *len, int *proto,
-                         void **reply_buf, int *reply_len, int force_new)
+
+/*
+ * Note: returned pointer is the address of a structure that's
+ * managed separately.  Caller must *not* attempt to free it.
+ */
+static struct ceph_auth_handshake *get_authorizer(struct ceph_connection *con,
+                                       int *proto, int force_new)
 {
        struct ceph_mds_session *s = con->private;
        struct ceph_mds_client *mdsc = s->s_mdsc;
        struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth;
        struct ceph_auth_handshake *auth = &s->s_auth;
-       int ret = 0;
 
        if (force_new && auth->authorizer) {
                if (ac->ops && ac->ops->destroy_authorizer)
@@ -3411,18 +3414,14 @@ static int get_authorizer(struct ceph_connection *con,
                auth->authorizer = NULL;
        }
        if (!auth->authorizer && ac->ops && ac->ops->create_authorizer) {
-               ret = ac->ops->create_authorizer(ac, CEPH_ENTITY_TYPE_MDS, auth);
+               int ret = ac->ops->create_authorizer(ac, CEPH_ENTITY_TYPE_MDS,
+                                                       auth);
                if (ret)
-                       return ret;
+                       return ERR_PTR(ret);
        }
-
        *proto = ac->protocol;
-       *buf = auth->authorizer_buf;
-       *len = auth->authorizer_buf_len;
-       *reply_buf = auth->authorizer_reply_buf;
-       *reply_len = auth->authorizer_reply_buf_len;
 
-       return 0;
+       return auth;
 }