mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-03 00:54:09 +08:00
libceph: invalidate AUTH in addition to a service ticket
If we fault due to authentication, we invalidate the service ticket we have and request a new one - the idea being that if a service rejected our authorizer, it must have expired, despite mon_client's attempts at periodic renewal. (The other possibility is that our ticket is too new and the service hasn't gotten it yet, in which case invalidating isn't necessary but doesn't hurt.) Invalidating just the service ticket is not enough, though. If we assume a failure on mon_client's part to renew a service ticket, we have to assume the same for the AUTH ticket. If our AUTH ticket is bad, we won't get any service tickets no matter how hard we try, so invalidate AUTH ticket along with the service ticket. Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Sage Weil <sage@redhat.com>
This commit is contained in:
parent
6abe097db5
commit
187d131dd9
@ -684,8 +684,7 @@ static void ceph_x_destroy(struct ceph_auth_client *ac)
|
||||
ac->private = NULL;
|
||||
}
|
||||
|
||||
static void ceph_x_invalidate_authorizer(struct ceph_auth_client *ac,
|
||||
int peer_type)
|
||||
static void invalidate_ticket(struct ceph_auth_client *ac, int peer_type)
|
||||
{
|
||||
struct ceph_x_ticket_handler *th;
|
||||
|
||||
@ -694,6 +693,19 @@ static void ceph_x_invalidate_authorizer(struct ceph_auth_client *ac,
|
||||
th->have_key = false;
|
||||
}
|
||||
|
||||
static void ceph_x_invalidate_authorizer(struct ceph_auth_client *ac,
|
||||
int peer_type)
|
||||
{
|
||||
/*
|
||||
* We are to invalidate a service ticket in the hopes of
|
||||
* getting a new, hopefully more valid, one. But, we won't get
|
||||
* it unless our AUTH ticket is good, so invalidate AUTH ticket
|
||||
* as well, just in case.
|
||||
*/
|
||||
invalidate_ticket(ac, peer_type);
|
||||
invalidate_ticket(ac, CEPH_ENTITY_TYPE_AUTH);
|
||||
}
|
||||
|
||||
static int calcu_signature(struct ceph_x_authorizer *au,
|
||||
struct ceph_msg *msg, __le64 *sig)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user