浏览代码

[SCSI] qla2xxx: Fix NULL ptr deref bug in fail path during queue create

Current code attempts to clean up resources when queue create fails and there it
invokes queue free call with a (NULL) pointer to the queue which could not be
allocated in the first place. Fix it by returning directly without invoking the
queue free call as no resources has been allocated at that point of time.

Reported-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Anirban Chakraborty 16 年之前
父节点
当前提交
c7922a911c
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      drivers/scsi/qla2xxx/qla_mid.c

+ 4 - 2
drivers/scsi/qla2xxx/qla_mid.c

@@ -568,7 +568,7 @@ qla25xx_create_req_que(struct qla_hw_data *ha, uint16_t options,
 	if (req == NULL) {
 	if (req == NULL) {
 		qla_printk(KERN_WARNING, ha, "could not allocate memory"
 		qla_printk(KERN_WARNING, ha, "could not allocate memory"
 			"for request que\n");
 			"for request que\n");
-		goto que_failed;
+		goto failed;
 	}
 	}
 
 
 	req->length = REQUEST_ENTRY_CNT_24XX;
 	req->length = REQUEST_ENTRY_CNT_24XX;
@@ -632,6 +632,7 @@ qla25xx_create_req_que(struct qla_hw_data *ha, uint16_t options,
 
 
 que_failed:
 que_failed:
 	qla25xx_free_req_que(base_vha, req);
 	qla25xx_free_req_que(base_vha, req);
+failed:
 	return 0;
 	return 0;
 }
 }
 
 
@@ -659,7 +660,7 @@ qla25xx_create_rsp_que(struct qla_hw_data *ha, uint16_t options,
 	if (rsp == NULL) {
 	if (rsp == NULL) {
 		qla_printk(KERN_WARNING, ha, "could not allocate memory for"
 		qla_printk(KERN_WARNING, ha, "could not allocate memory for"
 				" response que\n");
 				" response que\n");
-		goto que_failed;
+		goto failed;
 	}
 	}
 
 
 	rsp->length = RESPONSE_ENTRY_CNT_MQ;
 	rsp->length = RESPONSE_ENTRY_CNT_MQ;
@@ -728,6 +729,7 @@ qla25xx_create_rsp_que(struct qla_hw_data *ha, uint16_t options,
 
 
 que_failed:
 que_failed:
 	qla25xx_free_rsp_que(base_vha, rsp);
 	qla25xx_free_rsp_que(base_vha, rsp);
+failed:
 	return 0;
 	return 0;
 }
 }