diff options
Diffstat (limited to 'drivers/scsi/libiscsi_tcp.c')
| -rw-r--r-- | drivers/scsi/libiscsi_tcp.c | 14 | 
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/scsi/libiscsi_tcp.c b/drivers/scsi/libiscsi_tcp.c index e98ae33f1295..09b232fd9a1b 100644 --- a/drivers/scsi/libiscsi_tcp.c +++ b/drivers/scsi/libiscsi_tcp.c @@ -1084,7 +1084,8 @@ iscsi_tcp_conn_setup(struct iscsi_cls_session *cls_session, int dd_data_size,  	struct iscsi_cls_conn *cls_conn;  	struct iscsi_tcp_conn *tcp_conn; -	cls_conn = iscsi_conn_setup(cls_session, sizeof(*tcp_conn), conn_idx); +	cls_conn = iscsi_conn_setup(cls_session, +				    sizeof(*tcp_conn) + dd_data_size, conn_idx);  	if (!cls_conn)  		return NULL;  	conn = cls_conn->dd_data; @@ -1096,22 +1097,13 @@ iscsi_tcp_conn_setup(struct iscsi_cls_session *cls_session, int dd_data_size,  	tcp_conn = conn->dd_data;  	tcp_conn->iscsi_conn = conn; - -	tcp_conn->dd_data = kzalloc(dd_data_size, GFP_KERNEL); -	if (!tcp_conn->dd_data) { -		iscsi_conn_teardown(cls_conn); -		return NULL; -	} +	tcp_conn->dd_data = conn->dd_data + sizeof(*tcp_conn);  	return cls_conn;  }  EXPORT_SYMBOL_GPL(iscsi_tcp_conn_setup);  void iscsi_tcp_conn_teardown(struct iscsi_cls_conn *cls_conn)  { -	struct iscsi_conn *conn = cls_conn->dd_data; -	struct iscsi_tcp_conn *tcp_conn = conn->dd_data; - -	kfree(tcp_conn->dd_data);  	iscsi_conn_teardown(cls_conn);  }  EXPORT_SYMBOL_GPL(iscsi_tcp_conn_teardown);  |