]> err.no Git - linux-2.6/commitdiff
[SCSI] iscsi: always release crypto
authorPete Wyckoff <pw@osc.edu>
Wed, 8 Nov 2006 21:58:31 +0000 (15:58 -0600)
committerJames Bottomley <jejb@mulgrave.(none)>
Fri, 10 Nov 2006 00:41:40 +0000 (09:41 +0900)
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>
drivers/scsi/iscsi_tcp.c

index 0a9dbc59663fc723ef839193292a157580227d98..c0b8b33e935caa2f5f19aed2ba52d15e19e0b736 100644 (file)
@@ -1816,21 +1816,14 @@ iscsi_tcp_conn_destroy(struct iscsi_cls_conn *cls_conn)
 {
        struct iscsi_conn *conn = cls_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_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);
 }