From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 854AE26B2CE for ; Sun, 2 Aug 2026 23:00:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785711647; cv=none; b=D2FwtBLQwDD9EnFCp28/1S/NfcLJGjn3//ylsi34dXAs6cl+4wB2MZBvjhmOCqchLcmviB9GxWUps0a+CMga2+pegEmNSNUcFlJfmrPmIu/SOrIl3sM8ybih4Doqg8memhRyP9qlcTFKxMGIKQBdXVCoWuP/JDUH+PbRxe0+h6Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785711647; c=relaxed/simple; bh=m/m7KTgKi/LcyP+eWbddXArCStEzIKmA1HvhZGlEyD4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=hr9TXj+W3TmYGFFSRmgpnLYIlkKAn0aj5B1GhcOwsRiSFlgjDYvjjN6IAL71ftRCmgBPdSJKz3zzPF+vOqiZXWN6Fciri39pSfVNXRwLa2WcllYUM4zTKdreXOopFH3qFYQQilcoXxvAN8BVOd3/7F8ANF9pcH58+A8WbGZKoQQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EUx4n9zh; arc=none smtp.client-ip=209.85.160.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EUx4n9zh" Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-51c8e2e39easo24644901cf.0 for ; Sun, 02 Aug 2026 16:00:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785711645; x=1786316445; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=vxrln7BIlezN0ZqkL6mqHcDhzTt4gD/8fw46+cxfpnI=; b=EUx4n9zhF1rAOYlWMumejEpoOOoIEIz9GlPSOUOWN5LziajEXRM6bDk3gKBRe+fSyC ME/D0xWQF5XbzIxZk8/NewHza/+jwHAZClawEKw2P9/n9Q7cGsESXRFcgbO81l4TS01/ rVlitW7Zu5Tno+2v+e4MFmbIDaXMZOhFgux1UDX5UBlFIFmiULkiZsIrmFb06KLknwRN RItluXKwr8a4MUXTnOPZ2pOB17ZujHtK4gSDOozXiB8cDbxkH2B8O89XmyaMD+lyNeR4 5gGH+b4NmgrkFktJ7XKPNO/h0xCe4IfeeyWBXU40SPnGlgonCvx8B4FjN8gftPmtML7G vm0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785711645; x=1786316445; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vxrln7BIlezN0ZqkL6mqHcDhzTt4gD/8fw46+cxfpnI=; b=V3sU9Vk6AfAN74LVKJA7w+atSDsuEMGzXDYZ8g6hMZwB5DUl6GVpL7kUTMSyNMV7Nc 4KXaq2f+S1Z6o7Ko8mDnVD3iBMyA6hikHNAOTP0tiOXn+xAUz57hjnnm4gUj/Fwsfl5o 0q+eOFrS/n4612+d6RzPTS9T1Gg43d4kUrbLELBsKr/CqAoinpNExqdrDJWvpThoZZW4 EU/1Jfnpy9xymTr9RYiXp+lGskBgr4/EyujmTtbE4TnRlz+G2aKEGSU/n0LHGjpz9+W8 EycR5UTqnNakF6Ft+AulUi0Xi+uRlXFHKY6ehxLVfO9DfZvVXuHJf7MHpuNWFQZLW8JF ytmw== X-Forwarded-Encrypted: i=1; AHgh+RqnQsBHffFc8jBrZIjp+yfi/c0UpAXMBIpTrmhPEAd6Wl6kPWOFGoCJI/NiDPL7uhfqCj+3HMVFPIF5q8M=@vger.kernel.org X-Gm-Message-State: AOJu0YzSvKPK41d/iFPVHlix/Xn/mthPDsq3RO1IMRYt7/Z19DCY/nhe IcZM3t/UP4Gibnk5Qc18GVWl9n7Y7SzgBYPiO99tFODtN1KnyDHvIITO X-Gm-Gg: AR+sD12XNSEqZ4LkKW20T5NJMULwjj7KQ6b5OGB5Gr0zYwfTphji0GQ/DXdt7LfJMqg ypZVWmp7rtlna3IWh1pskiaMRSHsx94UA0hXdfBZ+esSBpDOxrxXLx3+TAes3JspSbicoGfx52f 8+ag/+IxsXcmyEWPaVbb8fPvx5Vrd4uVS0k1z1gdDWQx5m784Wi0ZZDo7X2AvNW9VylF7JVKl/M o2MMbb7vatZdaPLNi1q3vrlbrSiDhMkTcw2e7MQqm/MYVQ4HeTKp7sjdT8DXVJVSkIuE1xVXdL5 sEYc0l//af0lWzvSbWf62oAsgB009mNMzOy4PyyaC51NzXAV9n9fM/ogNZIuTjqswYAisCpKO4F ASDsysY6mOChF+liBXEZ6PyZzCySR9foFnBZhkcMaY+Qs5gilUctq8FVRjPTFb0ZFacL+u/L+Dh VKWHFV9Gz4Sj01KbqBmjzQk/DDNiggo5am42zlXT3ndcdFZEEHVeVSehb9NjDN0wGuwpsehCzHn tMMF1oAT1P7XQ4o5EIwJu+MrX50azvb5OjlOZ0BnkTqz9zFEgdCB5o82CE91rg= X-Received: by 2002:a05:622a:40c6:b0:517:5bc1:e1f0 with SMTP id d75a77b69052e-52b56521469mr168643111cf.0.1785711645310; Sun, 02 Aug 2026 16:00:45 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-908435def8fsm61606316d6.38.2026.08.02.16.00.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 16:00:43 -0700 (PDT) From: Yuho Choi To: njavali@marvell.com, GR-QLogic-Storage-Upstream@marvell.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v1] scsi: qla2xxx: Cancel qpair work before freeing queues Date: Sun, 2 Aug 2026 19:00:39 -0400 Message-ID: <20260802230039.586918-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The qpair response interrupt handler queues q_work with qpair as its context. qla2xxx_create_qpair() frees qpair on setup failure after deleting the response queue, but does not cancel work queued before the failure. qla2xxx_delete_qpair() has the same ordering issue. Mark the qpair as being deleted and cancel its work before deleting the request and response queues and freeing qpair. Fixes: d74595278f4a ("scsi: qla2xxx: Add multiple queue pair functionality.") Signed-off-by: Yuho Choi --- drivers/scsi/qla2xxx/qla_init.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index e746c9274cde..d5cd33e84720 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -10001,10 +10001,16 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos, return qpair; fail_bufpool: - mempool_destroy(qpair->srb_mempool); fail_mempool: - qla25xx_delete_req_que(vha, qpair->req); fail_req: + qpair->delete_in_progress = 1; + if (qpair->srb_mempool) { + mempool_destroy(qpair->srb_mempool); + qpair->srb_mempool = NULL; + } + if (qpair->hw->wq) + cancel_work_sync(&qpair->q_work); + qla25xx_delete_req_que(vha, qpair->req); qla25xx_delete_rsp_que(vha, qpair->rsp); fail_rsp: mutex_lock(&ha->mq_lock); @@ -10028,6 +10034,8 @@ int qla2xxx_delete_qpair(struct scsi_qla_host *vha, struct qla_qpair *qpair) struct qla_hw_data *ha = qpair->hw; qpair->delete_in_progress = 1; + if (qpair->hw->wq) + cancel_work_sync(&qpair->q_work); qla_free_buf_pool(qpair); -- 2.43.0