浏览代码

[SCSI] iscsi: always release crypto

Unconditionally free crypto state, as it is always allocated during
TCP connection creation.  Without this, crypto structures leak and
crc32c module refcounts grow as connections are created and
destroyed.

Signed-off-by: Pete Wyckoff <pw@osc.edu>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Pete Wyckoff 18 年之前
父节点
当前提交
534284a09b
共有 1 个文件被更改,包括 4 次插入11 次删除
  1. 4 11
      drivers/scsi/iscsi_tcp.c

+ 4 - 11
drivers/scsi/iscsi_tcp.c

@@ -1816,21 +1816,14 @@ iscsi_tcp_conn_destroy(struct iscsi_cls_conn *cls_conn)
 {
 {
 	struct iscsi_conn *conn = cls_conn->dd_data;
 	struct iscsi_conn *conn = cls_conn->dd_data;
 	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
 	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
-	int digest = 0;
-
-	if (conn->hdrdgst_en || conn->datadgst_en)
-		digest = 1;
 
 
 	iscsi_tcp_release_conn(conn);
 	iscsi_tcp_release_conn(conn);
 	iscsi_conn_teardown(cls_conn);
 	iscsi_conn_teardown(cls_conn);
 
 
-	/* now free tcp_conn */
-	if (digest) {
-		if (tcp_conn->tx_hash.tfm)
-			crypto_free_hash(tcp_conn->tx_hash.tfm);
-		if (tcp_conn->rx_hash.tfm)
-			crypto_free_hash(tcp_conn->rx_hash.tfm);
-	}
+	if (tcp_conn->tx_hash.tfm)
+		crypto_free_hash(tcp_conn->tx_hash.tfm);
+	if (tcp_conn->rx_hash.tfm)
+		crypto_free_hash(tcp_conn->rx_hash.tfm);
 
 
 	kfree(tcp_conn);
 	kfree(tcp_conn);
 }
 }