linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] [SCSI] qla4xxx: don't free pool that wasn't allocated
@ 2012-05-17  7:11 Dan Carpenter
  2012-05-17  7:13 ` [patch] [SCSI] qla2xxx: " Dan Carpenter
  2012-05-17 15:55 ` [patch] [SCSI] qla4xxx: " Mike Christie
  0 siblings, 2 replies; 4+ messages in thread
From: Dan Carpenter @ 2012-05-17  7:11 UTC (permalink / raw)
  To: Ravi Anand
  Cc: Vikas Chaudhary, iscsi-driver, James E.J. Bottomley, linux-scsi,
	linux-kernel, kernel-janitors

In the original code if dma_pool_alloc() fails then we call
dma_pool_free().  The problem is that "chap_table" is NULL and
"chap_dma" is uninitialized so it will cause an error.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c
index 7ac21da..21dce92 100644
--- a/drivers/scsi/qla4xxx/ql4_mbx.c
+++ b/drivers/scsi/qla4xxx/ql4_mbx.c
@@ -1329,10 +1329,8 @@ int qla4xxx_get_chap(struct scsi_qla_host *ha, char *username, char *password,
 	dma_addr_t chap_dma;
 
 	chap_table = dma_pool_alloc(ha->chap_dma_pool, GFP_KERNEL, &chap_dma);
-	if (chap_table == NULL) {
-		ret = -ENOMEM;
-		goto exit_get_chap;
-	}
+	if (chap_table == NULL)
+		return -ENOMEM;
 
 	chap_size = sizeof(struct ql4_chap_table);
 	memset(chap_table, 0, chap_size);

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [patch] [SCSI] qla2xxx: don't free pool that wasn't allocated
  2012-05-17  7:11 [patch] [SCSI] qla4xxx: don't free pool that wasn't allocated Dan Carpenter
@ 2012-05-17  7:13 ` Dan Carpenter
  2012-05-17 17:04   ` Chad Dupuis
  2012-05-17 15:55 ` [patch] [SCSI] qla4xxx: " Mike Christie
  1 sibling, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2012-05-17  7:13 UTC (permalink / raw)
  To: Andrew Vasquez
  Cc: linux-driver, James E.J. Bottomley, linux-scsi, linux-kernel,
	kernel-janitors

In the original code, if dma_pool_alloc() fails then we call
dma_pool_free().  It causes an error, possibly a NULL dereference.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index c17975d..44380d3 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -2386,7 +2386,7 @@ sufficient_dsds:
 		if (!ctx->fcp_cmnd) {
 			ql_log(ql_log_fatal, vha, 0x3011,
 			    "Failed to allocate fcp_cmnd for cmd=%p.\n", cmd);
-			goto queuing_error_fcp_cmnd;
+			goto queuing_error;
 		}
 
 		/* Initialize the DSD list and dma handle */

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [patch] [SCSI] qla4xxx: don't free pool that wasn't allocated
  2012-05-17  7:11 [patch] [SCSI] qla4xxx: don't free pool that wasn't allocated Dan Carpenter
  2012-05-17  7:13 ` [patch] [SCSI] qla2xxx: " Dan Carpenter
@ 2012-05-17 15:55 ` Mike Christie
  1 sibling, 0 replies; 4+ messages in thread
From: Mike Christie @ 2012-05-17 15:55 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Ravi Anand, Vikas Chaudhary, iscsi-driver, James E.J. Bottomley,
	linux-scsi, linux-kernel, kernel-janitors

On 05/17/2012 02:11 AM, Dan Carpenter wrote:
> In the original code if dma_pool_alloc() fails then we call
> dma_pool_free().  The problem is that "chap_table" is NULL and
> "chap_dma" is uninitialized so it will cause an error.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c
> index 7ac21da..21dce92 100644
> --- a/drivers/scsi/qla4xxx/ql4_mbx.c
> +++ b/drivers/scsi/qla4xxx/ql4_mbx.c
> @@ -1329,10 +1329,8 @@ int qla4xxx_get_chap(struct scsi_qla_host *ha, char *username, char *password,
>  	dma_addr_t chap_dma;
>  
>  	chap_table = dma_pool_alloc(ha->chap_dma_pool, GFP_KERNEL, &chap_dma);
> -	if (chap_table == NULL) {
> -		ret = -ENOMEM;
> -		goto exit_get_chap;
> -	}
> +	if (chap_table == NULL)
> +		return -ENOMEM;
>  
>  	chap_size = sizeof(struct ql4_chap_table);
>  	memset(chap_table, 0, chap_size);

I thought dma_pool_free checked the vaddr/chap_table like how kfree
checks for nulls. You are right. Looks ok to me.

Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] [SCSI] qla2xxx: don't free pool that wasn't allocated
  2012-05-17  7:13 ` [patch] [SCSI] qla2xxx: " Dan Carpenter
@ 2012-05-17 17:04   ` Chad Dupuis
  0 siblings, 0 replies; 4+ messages in thread
From: Chad Dupuis @ 2012-05-17 17:04 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Andrew Vasquez, Dept-Eng Linux Driver, James E.J. Bottomley,
	linux-scsi, linux-kernel, kernel-janitors


On Thu, 17 May 2012, Dan Carpenter wrote:

> In the original code, if dma_pool_alloc() fails then we call
> dma_pool_free().  It causes an error, possibly a NULL dereference.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
> index c17975d..44380d3 100644
> --- a/drivers/scsi/qla2xxx/qla_iocb.c
> +++ b/drivers/scsi/qla2xxx/qla_iocb.c
> @@ -2386,7 +2386,7 @@ sufficient_dsds:
>               if (!ctx->fcp_cmnd) {
>                       ql_log(ql_log_fatal, vha, 0x3011,
>                           "Failed to allocate fcp_cmnd for cmd=%p.\n", cmd);
> -                     goto queuing_error_fcp_cmnd;
> +                     goto queuing_error;
>               }
>
>               /* Initialize the DSD list and dma handle */
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>

Thanks for the patch.

Acked-by: Chad Dupuis <chad.dupuis@qlogic.com>

This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-05-17 17:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-17  7:11 [patch] [SCSI] qla4xxx: don't free pool that wasn't allocated Dan Carpenter
2012-05-17  7:13 ` [patch] [SCSI] qla2xxx: " Dan Carpenter
2012-05-17 17:04   ` Chad Dupuis
2012-05-17 15:55 ` [patch] [SCSI] qla4xxx: " Mike Christie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).