All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] ceph: fix get_ticket_handler() error handling
@ 2010-08-26  9:12 ` Dan Carpenter
  0 siblings, 0 replies; 4+ 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] 4+ messages in thread

* [patch] ceph: fix get_ticket_handler() error handling
@ 2010-08-26  9:12 ` Dan Carpenter
  0 siblings, 0 replies; 4+ 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] 4+ messages in thread

* Re: [patch] ceph: fix get_ticket_handler() error handling
  2010-08-26  9:12 ` Dan Carpenter
@ 2010-08-26 16:30   ` Sage Weil
  -1 siblings, 0 replies; 4+ 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] 4+ messages in thread

* Re: [patch] ceph: fix get_ticket_handler() error handling
@ 2010-08-26 16:30   ` Sage Weil
  0 siblings, 0 replies; 4+ 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] 4+ messages in thread

end of thread, other threads:[~2010-08-26 16:30 UTC | newest]

Thread overview: 4+ 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  9:12 ` Dan Carpenter
2010-08-26 16:30 ` Sage Weil
2010-08-26 16:30   ` Sage Weil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.