From e3f77ba979937c5e877b48b854b03a3df0cfabb1 Mon Sep 17 00:00:00 2001 From: Israel Rukshin Date: Wed, 17 Aug 2016 07:27:24 +0000 Subject: [PATCH] isert: fix fops ioctl using invalid conn On teardown flow we need to set dev conn state to disconnected. Signed-off-by: Israel Rukshin git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6939 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- iscsi-scst/kernel/isert-scst/isert.c | 5 +++++ iscsi-scst/kernel/isert-scst/isert_login.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/iscsi-scst/kernel/isert-scst/isert.c b/iscsi-scst/kernel/isert-scst/isert.c index 2a3693754..3493812e3 100644 --- a/iscsi-scst/kernel/isert-scst/isert.c +++ b/iscsi-scst/kernel/isert-scst/isert.c @@ -78,6 +78,11 @@ static void isert_mark_conn_closed(struct iscsi_conn *conn, int flags) static void isert_close_conn(struct iscsi_conn *conn, int flags) { + struct isert_conn_dev *dev; + + dev = isert_get_priv(conn); + if (dev) + dev->state = CS_DISCONNECTED; } static int isert_receive_cmnd_data(struct iscsi_cmnd *cmnd) diff --git a/iscsi-scst/kernel/isert-scst/isert_login.c b/iscsi-scst/kernel/isert-scst/isert_login.c index 5dcd0e0a6..9671a4252 100644 --- a/iscsi-scst/kernel/isert-scst/isert_login.c +++ b/iscsi-scst/kernel/isert-scst/isert_login.c @@ -211,6 +211,13 @@ int isert_conn_alloc(struct iscsi_session *session, dev = filp->private_data; + if (unlikely(dev->state == CS_DISCONNECTED)) { + res = -EBADF; + goto out; + } + + sBUG_ON(dev->state != CS_RSP_FINISHED); + cmnd = dev->login_rsp; sBUG_ON(cmnd == NULL);