]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: iscsi: target: Fix conn_ops double free
authorMike Christie <mchristi@redhat.com>
Mon, 27 Aug 2018 19:45:16 +0000 (14:45 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 30 Aug 2018 11:07:12 +0000 (07:07 -0400)
commit1aadae3cb859ff938f02910e25f39e4f5aaed894
tree47b7cd2caed9db4f3de6f98d6cc96cfac2229b98
parent89a07513d09c6729a2f84c24a0c6988ba4b3ac9d
scsi: iscsi: target: Fix conn_ops double free

If iscsi_login_init_conn fails it can free conn_ops.
__iscsi_target_login_thread will then call iscsi_target_login_sess_out
which will also free it.

This fixes the problem by organizing conn allocation/setup into parts that
are needed through the life of the conn and parts that are only needed for
the login. The free functions then release what was allocated in the alloc
functions.

With this patch we have:

iscsit_alloc_conn/iscsit_free_conn - allocs/frees the conn we need for the
entire life of the conn.

iscsi_login_init_conn/iscsi_target_nego_release - allocs/frees the parts
of the conn that are only needed during login.

Signed-off-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/iscsi/iscsi_target.c
drivers/target/iscsi/iscsi_target_login.c
drivers/target/iscsi/iscsi_target_login.h