* [patch] ceph: fix get_ticket_handler() error handling
@ 2010-08-26 9:12 Dan Carpenter
2010-08-26 16:30 ` Sage Weil
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2010-08-26 9:12 UTC (permalink / raw)
To: Sage Weil; +Cc: Yehuda Sadeh, ceph-devel, kernel-janitors
get_ticket_handler() returns a valid pointer or it returns
ERR_PTR(-ENOMEM) if kzalloc() fails.
Signed-off-by: Dan Carpenter <error27@gmail.com>
diff --git a/fs/ceph/auth_x.c b/fs/ceph/auth_x.c
index 582e0b2..a2d002c 100644
--- a/fs/ceph/auth_x.c
+++ b/fs/ceph/auth_x.c
@@ -376,7 +376,7 @@ static void ceph_x_validate_tickets(struct ceph_auth_client *ac, int *pneed)
th = get_ticket_handler(ac, service);
- if (!th) {
+ if (IS_ERR(th)) {
*pneed |= service;
continue;
}
@@ -399,6 +399,9 @@ static int ceph_x_build_request(struct ceph_auth_client *ac,
struct ceph_x_ticket_handler *th get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
+ if (IS_ERR(th))
+ return PTR_ERR(th);
+
ceph_x_validate_tickets(ac, &need);
dout("build_request want %x have %x need %x\n",
@@ -450,7 +453,6 @@ static int ceph_x_build_request(struct ceph_auth_client *ac,
return -ERANGE;
head->op = cpu_to_le16(CEPHX_GET_PRINCIPAL_SESSION_KEY);
- BUG_ON(!th);
ret = ceph_x_build_authorizer(ac, th, &xi->auth_authorizer);
if (ret)
return ret;
@@ -505,7 +507,8 @@ static int ceph_x_handle_reply(struct ceph_auth_client *ac, int result,
case CEPHX_GET_PRINCIPAL_SESSION_KEY:
th = get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
- BUG_ON(!th);
+ if (IS_ERR(th))
+ return PTR_ERR(th);
ret = ceph_x_proc_ticket_reply(ac, &th->session_key,
buf + sizeof(*head), end);
break;
@@ -563,8 +566,8 @@ static int ceph_x_verify_authorizer_reply(struct ceph_auth_client *ac,
void *end = p + sizeof(au->reply_buf);
th = get_ticket_handler(ac, au->service);
- if (!th)
- return -EIO; /* hrm! */
+ if (IS_ERR(th))
+ return PTR_ERR(th);
ret = ceph_x_decrypt(&th->session_key, &p, end, &reply, sizeof(reply));
if (ret < 0)
return ret;
@@ -626,7 +629,7 @@ static void ceph_x_invalidate_authorizer(struct ceph_auth_client *ac,
struct ceph_x_ticket_handler *th;
th = get_ticket_handler(ac, peer_type);
- if (th && !IS_ERR(th))
+ if (!IS_ERR(th))
remove_ticket_handler(ac, th);
}
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [patch] ceph: fix get_ticket_handler() error handling
2010-08-26 9:12 [patch] ceph: fix get_ticket_handler() error handling Dan Carpenter
@ 2010-08-26 16:30 ` Sage Weil
0 siblings, 0 replies; 2+ messages in thread
From: Sage Weil @ 2010-08-26 16:30 UTC (permalink / raw)
To: Dan Carpenter; +Cc: Yehuda Sadeh, ceph-devel, kernel-janitors
Applied, thanks!
sage
On Thu, 26 Aug 2010, Dan Carpenter wrote:
> get_ticket_handler() returns a valid pointer or it returns
> ERR_PTR(-ENOMEM) if kzalloc() fails.
>
> Signed-off-by: Dan Carpenter <error27@gmail.com>
>
> diff --git a/fs/ceph/auth_x.c b/fs/ceph/auth_x.c
> index 582e0b2..a2d002c 100644
> --- a/fs/ceph/auth_x.c
> +++ b/fs/ceph/auth_x.c
> @@ -376,7 +376,7 @@ static void ceph_x_validate_tickets(struct ceph_auth_client *ac, int *pneed)
>
> th = get_ticket_handler(ac, service);
>
> - if (!th) {
> + if (IS_ERR(th)) {
> *pneed |= service;
> continue;
> }
> @@ -399,6 +399,9 @@ static int ceph_x_build_request(struct ceph_auth_client *ac,
> struct ceph_x_ticket_handler *th > get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
>
> + if (IS_ERR(th))
> + return PTR_ERR(th);
> +
> ceph_x_validate_tickets(ac, &need);
>
> dout("build_request want %x have %x need %x\n",
> @@ -450,7 +453,6 @@ static int ceph_x_build_request(struct ceph_auth_client *ac,
> return -ERANGE;
> head->op = cpu_to_le16(CEPHX_GET_PRINCIPAL_SESSION_KEY);
>
> - BUG_ON(!th);
> ret = ceph_x_build_authorizer(ac, th, &xi->auth_authorizer);
> if (ret)
> return ret;
> @@ -505,7 +507,8 @@ static int ceph_x_handle_reply(struct ceph_auth_client *ac, int result,
>
> case CEPHX_GET_PRINCIPAL_SESSION_KEY:
> th = get_ticket_handler(ac, CEPH_ENTITY_TYPE_AUTH);
> - BUG_ON(!th);
> + if (IS_ERR(th))
> + return PTR_ERR(th);
> ret = ceph_x_proc_ticket_reply(ac, &th->session_key,
> buf + sizeof(*head), end);
> break;
> @@ -563,8 +566,8 @@ static int ceph_x_verify_authorizer_reply(struct ceph_auth_client *ac,
> void *end = p + sizeof(au->reply_buf);
>
> th = get_ticket_handler(ac, au->service);
> - if (!th)
> - return -EIO; /* hrm! */
> + if (IS_ERR(th))
> + return PTR_ERR(th);
> ret = ceph_x_decrypt(&th->session_key, &p, end, &reply, sizeof(reply));
> if (ret < 0)
> return ret;
> @@ -626,7 +629,7 @@ static void ceph_x_invalidate_authorizer(struct ceph_auth_client *ac,
> struct ceph_x_ticket_handler *th;
>
> th = get_ticket_handler(ac, peer_type);
> - if (th && !IS_ERR(th))
> + if (!IS_ERR(th))
> remove_ticket_handler(ac, th);
> }
>
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-08-26 16:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-26 9:12 [patch] ceph: fix get_ticket_handler() error handling Dan Carpenter
2010-08-26 16:30 ` Sage Weil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox