Commit 79dbd1ba authored by Ilya Dryomov's avatar Ilya Dryomov

libceph: msg signing callouts don't need con argument

We can use msg->con instead - at the point we sign an outgoing message
or check the signature on the incoming one, msg->con is always set.  We
wouldn't know how to sign a message without an associated session (i.e.
msg->con == NULL) and being able to sign a message using an explicitly
provided authorizer is of no use.
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
parent 8a703a38
...@@ -3942,17 +3942,19 @@ static struct ceph_msg *mds_alloc_msg(struct ceph_connection *con, ...@@ -3942,17 +3942,19 @@ static struct ceph_msg *mds_alloc_msg(struct ceph_connection *con,
return msg; return msg;
} }
static int sign_message(struct ceph_connection *con, struct ceph_msg *msg) static int mds_sign_message(struct ceph_msg *msg)
{ {
struct ceph_mds_session *s = con->private; struct ceph_mds_session *s = msg->con->private;
struct ceph_auth_handshake *auth = &s->s_auth; struct ceph_auth_handshake *auth = &s->s_auth;
return ceph_auth_sign_message(auth, msg); return ceph_auth_sign_message(auth, msg);
} }
static int check_message_signature(struct ceph_connection *con, struct ceph_msg *msg) static int mds_check_message_signature(struct ceph_msg *msg)
{ {
struct ceph_mds_session *s = con->private; struct ceph_mds_session *s = msg->con->private;
struct ceph_auth_handshake *auth = &s->s_auth; struct ceph_auth_handshake *auth = &s->s_auth;
return ceph_auth_check_message_signature(auth, msg); return ceph_auth_check_message_signature(auth, msg);
} }
...@@ -3965,8 +3967,8 @@ static const struct ceph_connection_operations mds_con_ops = { ...@@ -3965,8 +3967,8 @@ static const struct ceph_connection_operations mds_con_ops = {
.invalidate_authorizer = invalidate_authorizer, .invalidate_authorizer = invalidate_authorizer,
.peer_reset = peer_reset, .peer_reset = peer_reset,
.alloc_msg = mds_alloc_msg, .alloc_msg = mds_alloc_msg,
.sign_message = sign_message, .sign_message = mds_sign_message,
.check_message_signature = check_message_signature, .check_message_signature = mds_check_message_signature,
}; };
/* eof */ /* eof */
...@@ -43,10 +43,9 @@ struct ceph_connection_operations { ...@@ -43,10 +43,9 @@ struct ceph_connection_operations {
struct ceph_msg * (*alloc_msg) (struct ceph_connection *con, struct ceph_msg * (*alloc_msg) (struct ceph_connection *con,
struct ceph_msg_header *hdr, struct ceph_msg_header *hdr,
int *skip); int *skip);
int (*sign_message) (struct ceph_connection *con, struct ceph_msg *msg);
int (*check_message_signature) (struct ceph_connection *con, int (*sign_message) (struct ceph_msg *msg);
struct ceph_msg *msg); int (*check_message_signature) (struct ceph_msg *msg);
}; };
/* use format string %s%d */ /* use format string %s%d */
......
...@@ -1205,7 +1205,7 @@ static void prepare_write_message_footer(struct ceph_connection *con) ...@@ -1205,7 +1205,7 @@ static void prepare_write_message_footer(struct ceph_connection *con)
con->out_kvec[v].iov_base = &m->footer; con->out_kvec[v].iov_base = &m->footer;
if (con->peer_features & CEPH_FEATURE_MSG_AUTH) { if (con->peer_features & CEPH_FEATURE_MSG_AUTH) {
if (con->ops->sign_message) if (con->ops->sign_message)
con->ops->sign_message(con, m); con->ops->sign_message(m);
else else
m->footer.sig = 0; m->footer.sig = 0;
con->out_kvec[v].iov_len = sizeof(m->footer); con->out_kvec[v].iov_len = sizeof(m->footer);
...@@ -2422,7 +2422,7 @@ static int read_partial_message(struct ceph_connection *con) ...@@ -2422,7 +2422,7 @@ static int read_partial_message(struct ceph_connection *con)
} }
if (need_sign && con->ops->check_message_signature && if (need_sign && con->ops->check_message_signature &&
con->ops->check_message_signature(con, m)) { con->ops->check_message_signature(m)) {
pr_err("read_partial_message %p signature check failed\n", m); pr_err("read_partial_message %p signature check failed\n", m);
return -EBADMSG; return -EBADMSG;
} }
......
...@@ -2979,17 +2979,19 @@ static int invalidate_authorizer(struct ceph_connection *con) ...@@ -2979,17 +2979,19 @@ static int invalidate_authorizer(struct ceph_connection *con)
return ceph_monc_validate_auth(&osdc->client->monc); return ceph_monc_validate_auth(&osdc->client->monc);
} }
static int sign_message(struct ceph_connection *con, struct ceph_msg *msg) static int osd_sign_message(struct ceph_msg *msg)
{ {
struct ceph_osd *o = con->private; struct ceph_osd *o = msg->con->private;
struct ceph_auth_handshake *auth = &o->o_auth; struct ceph_auth_handshake *auth = &o->o_auth;
return ceph_auth_sign_message(auth, msg); return ceph_auth_sign_message(auth, msg);
} }
static int check_message_signature(struct ceph_connection *con, struct ceph_msg *msg) static int osd_check_message_signature(struct ceph_msg *msg)
{ {
struct ceph_osd *o = con->private; struct ceph_osd *o = msg->con->private;
struct ceph_auth_handshake *auth = &o->o_auth; struct ceph_auth_handshake *auth = &o->o_auth;
return ceph_auth_check_message_signature(auth, msg); return ceph_auth_check_message_signature(auth, msg);
} }
...@@ -3001,7 +3003,7 @@ static const struct ceph_connection_operations osd_con_ops = { ...@@ -3001,7 +3003,7 @@ static const struct ceph_connection_operations osd_con_ops = {
.verify_authorizer_reply = verify_authorizer_reply, .verify_authorizer_reply = verify_authorizer_reply,
.invalidate_authorizer = invalidate_authorizer, .invalidate_authorizer = invalidate_authorizer,
.alloc_msg = alloc_msg, .alloc_msg = alloc_msg,
.sign_message = sign_message, .sign_message = osd_sign_message,
.check_message_signature = check_message_signature, .check_message_signature = osd_check_message_signature,
.fault = osd_reset, .fault = osd_reset,
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment