Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1644832pxf; Fri, 2 Apr 2021 17:36:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWxqpkkp9Fquuat1LFa97pZZiJeENoNzM0LGwVpwfWXvsxeYDvBGNXRvmH6POwMzzaF4TE X-Received: by 2002:a92:da08:: with SMTP id z8mr13060732ilm.11.1617410176936; Fri, 02 Apr 2021 17:36:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617410176; cv=none; d=google.com; s=arc-20160816; b=Ad5jRjxWxiRtjjK026JI5lIOBv3L2F9PuKUSRFAPs8xdEo6GXTZv13B6aU+cEP9pwv 3JYsxGjDx1nxrt0Y8RjoxZJDnB28KzCUf01O2p954JWWyp5YAIuwQ3zQ6jw10/D0ButS tQeQbbx+3uI1p0XsRsGDAZK+PotBMjHiQD17XkDLjUT+GOtVTICawWN31hz1XRo7jw0z XEEZi1Rvz4WvulrSglza1xmk4xqzRc0PXRvoK2036BlW+ZMcxDWWQPr6/T6njpyNjeGS U0SP8ws9KEvvurfIPHN6XyCUfWAllY3ZgtHwI8u8MKXyv/02XMbTMuxJ0GtfbNDnaTc8 qvIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:date:cc:to:from:subject:message-id:dkim-signature :dkim-signature; bh=UVmNoJhah+33Je0wcP+FKLR6UvCxYBVugWw6M7fxpaA=; b=ZIppuS06kb8EkPx7KTKxcFKCR8Vyk7uijW5ywUURqphxfQcntl7fYWksKepEnpFwO0 U1YuXNW+IJw8Ru8EsU2BjxvNY49SiVTi9z9Vi2j3bJ+IUsmu1rMFPixxtqToEH1Be7W/ +jfx8YdyajMlyF1eii7+nenYzT+acvm5VdXu+zmFw5k1TE+gaN68jHh8SNAaAM5Fkysn 7kY2bDxprs9YsXRzwSjD7EtPQdZozcWxf1ZXrFxF6+uowR52RJgF2y1D+0rc6NrfBUO2 ndjYLMn0l+LByQCcJa79JSSKdHbecQ1oS38KORfnvUfW1SaynjlBJaH8MaasHbXTBYGB x8yQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=oFu7+dVf; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=FKH8AKac; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hansenpartnership.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y14si8690446ilv.138.2021.04.02.17.35.36; Fri, 02 Apr 2021 17:36:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=oFu7+dVf; dkim=pass header.i=@hansenpartnership.com header.s=20151216 header.b=FKH8AKac; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hansenpartnership.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235604AbhDCAec (ORCPT + 99 others); Fri, 2 Apr 2021 20:34:32 -0400 Received: from bedivere.hansenpartnership.com ([96.44.175.130]:36658 "EHLO bedivere.hansenpartnership.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234821AbhDCAeb (ORCPT ); Fri, 2 Apr 2021 20:34:31 -0400 Received: from localhost (localhost [127.0.0.1]) by bedivere.hansenpartnership.com (Postfix) with ESMTP id 1394E1280398; Fri, 2 Apr 2021 17:34:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hansenpartnership.com; s=20151216; t=1617410070; bh=rlNH0yVuAuGR2mrl4bZ9TjpwdheZ+lwL1j7b+0NZA3k=; h=Message-ID:Subject:From:To:Date:From; b=oFu7+dVfijfxPVLY+ziFCPwtVfS/UPyX+z0eaCHlwLgDUbSG9gtnyw01Q5AzILUHQ QoJTkto7EKS4vUFe3kGON+rsHyA08Y8awU6gKgizF06871zEY4sABUGiw2VjbdU7Ar M4oaFf1snCcY3fv+WWVQydPa4Hb6nQVl2VuwCTzM= Received: from bedivere.hansenpartnership.com ([127.0.0.1]) by localhost (bedivere.hansenpartnership.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id R9DrTCxj4oc2; Fri, 2 Apr 2021 17:34:30 -0700 (PDT) Received: from jarvis.int.hansenpartnership.com (unknown [IPv6:2601:600:8280:66d1::527]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bedivere.hansenpartnership.com (Postfix) with ESMTPSA id ABDC91280397; Fri, 2 Apr 2021 17:34:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hansenpartnership.com; s=20151216; t=1617410069; bh=rlNH0yVuAuGR2mrl4bZ9TjpwdheZ+lwL1j7b+0NZA3k=; h=Message-ID:Subject:From:To:Date:From; b=FKH8AKacgBWAV7/1CKc3eCOtL2eS4GNJ7FddLLndLdTwHblUQxr+GT9bP198uHwag yszAs9WbCSyOSUQMdxm4z4/81GbEfRVlxOrZKwGOIrFA/DnIz9M13rWf1YptdiQOEM yzaSfUSuHSuztbFrKzun3kPt3mEgn8WRopYWM4so= Message-ID: <9aa8b614478d74ee0cb37dec9e20270c94d7f7c4.camel@HansenPartnership.com> Subject: [GIT PULL] SCSI fixes for 5.12-rc From: James Bottomley To: Andrew Morton , Linus Torvalds Cc: linux-scsi , linux-kernel Date: Fri, 02 Apr 2021 17:34:28 -0700 Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.4 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Single fix to iscsi for a rare race condition which can cause a kernel panic. The patch is available here: git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes The short changelog is: Gulam Mohamed (1): scsi: iscsi: Fix race condition between login and sync thread And the diffstat: drivers/scsi/scsi_transport_iscsi.c | 14 +++++++++++++- include/scsi/scsi_transport_iscsi.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) With full diff below. James --- diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index 969d24d580e2..bebfb355abdf 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c @@ -2471,6 +2471,7 @@ static void iscsi_if_stop_conn(struct iscsi_cls_conn *conn, int flag) */ mutex_lock(&conn_mutex); conn->transport->stop_conn(conn, flag); + conn->state = ISCSI_CONN_DOWN; mutex_unlock(&conn_mutex); } @@ -2894,6 +2895,13 @@ iscsi_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev) default: err = transport->set_param(conn, ev->u.set_param.param, data, ev->u.set_param.len); + if ((conn->state == ISCSI_CONN_BOUND) || + (conn->state == ISCSI_CONN_UP)) { + err = transport->set_param(conn, ev->u.set_param.param, + data, ev->u.set_param.len); + } else { + return -ENOTCONN; + } } return err; @@ -2953,6 +2961,7 @@ static int iscsi_if_ep_disconnect(struct iscsi_transport *transport, mutex_lock(&conn->ep_mutex); conn->ep = NULL; mutex_unlock(&conn->ep_mutex); + conn->state = ISCSI_CONN_DOWN; } transport->ep_disconnect(ep); @@ -3713,6 +3722,8 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group) ev->r.retcode = transport->bind_conn(session, conn, ev->u.b_conn.transport_eph, ev->u.b_conn.is_leading); + if (!ev->r.retcode) + conn->state = ISCSI_CONN_BOUND; mutex_unlock(&conn_mutex); if (ev->r.retcode || !transport->ep_connect) @@ -3944,7 +3955,8 @@ iscsi_conn_attr(local_ipaddr, ISCSI_PARAM_LOCAL_IPADDR); static const char *const connection_state_names[] = { [ISCSI_CONN_UP] = "up", [ISCSI_CONN_DOWN] = "down", - [ISCSI_CONN_FAILED] = "failed" + [ISCSI_CONN_FAILED] = "failed", + [ISCSI_CONN_BOUND] = "bound" }; static ssize_t show_conn_state(struct device *dev, diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index 8a26a2ffa952..fc5a39839b4b 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h @@ -193,6 +193,7 @@ enum iscsi_connection_state { ISCSI_CONN_UP = 0, ISCSI_CONN_DOWN, ISCSI_CONN_FAILED, + ISCSI_CONN_BOUND, }; struct iscsi_cls_conn {