• Mike Christie's avatar
    [SCSI] be2iscsi: fix disconnection cleanup · fa95d206
    Mike Christie authored
    This patch fixes 4 bugs in the connection connect/disconnect
    cleanup path.
    
    1. If beiscsi_open_conn fails beiscsi_free_ep was always being
    called, and if beiscsi_open_conn failed because beiscsi_get_cid
    failed then we would free an unallocated cid.
    
    2. If beiscsi_ep_connect failed due to a beiscsi_open_conn failure
    it was leaking iscsi_endpoints.
    
    3. beiscsi_ep_disconnect was leaking iscsi_endpoints.
    beiscsi_ep_disconnect should free the iscsi_endpoint. We cannot
    do it in beiscsi_conn_stop because that is only called for
    iscsi connection cleanup. If beiscsi_ep_connect returns
    success, but then the poll function fails or the connect
    times out then beiscsi_ep_disconnect will be called to clean
    up the ep. The conn_stop callout will not be called in that path.
    
    4. beiscsi_conn_stop was freeing the iscsi_endpoint then accessing
    it a couple lines later.
    Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    fa95d206
be_iscsi.c 19.4 KB