+++ /dev/null
-From e40d0d60d2c1e1cf43d222db49ed94322e32d6f7 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 4 Jul 2022 17:26:29 -0400
-Subject: __follow_mount_rcu(): verify that mount_lock remains unchanged
-
-From: Al Viro <viro@zeniv.linux.org.uk>
-
-[ Upstream commit 20aac6c60981f5bfacd66661d090d907bf1482f0 ]
-
-Validate mount_lock seqcount as soon as we cross into mount in RCU
-mode. Sure, ->mnt_root is pinned and will remain so until we
-do rcu_read_unlock() anyway, and we will eventually fail to unlazy if
-the mount_lock had been touched, but we might run into a hard error
-(e.g. -ENOENT) before trying to unlazy. And it's possible to end
-up with RCU pathwalk racing with rename() and umount() in a way
-that would fail with -ENOENT while non-RCU pathwalk would've
-succeeded with any timings.
-
-Once upon a time we hadn't needed that, but analysis had been subtle,
-brittle and went out of window as soon as RENAME_EXCHANGE had been
-added.
-
-It's narrow, hard to hit and won't get you anything other than
-stray -ENOENT that could be arranged in much easier way with the
-same priveleges, but it's a bug all the same.
-
-Cc: stable@kernel.org
-X-sky-is-falling: unlikely
-Fixes: da1ce0670c14 "vfs: add cross-rename"
-Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- fs/namei.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/fs/namei.c b/fs/namei.c
-index 66e0fe262a89..1fd854d4cd2c 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -1461,6 +1461,8 @@ static bool __follow_mount_rcu(struct nameidata *nd, struct path *path,
- * becoming unpinned.
- */
- flags = dentry->d_flags;
-+ if (read_seqretry(&mount_lock, nd->m_seq))
-+ return false;
- continue;
- }
- if (read_seqretry(&mount_lock, nd->m_seq))
---
-2.35.1
-
+++ /dev/null
-From 585d0f39ee37d8e804082139876ac4975e04209a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 26 Jul 2022 10:18:51 -0400
-Subject: ftrace/x86: Add back ftrace_expected assignment
-
-From: Steven Rostedt (Google) <rostedt@goodmis.org>
-
-[ Upstream commit ac6c1b2ca77e722a1e5d651f12f437f2f237e658 ]
-
-When a ftrace_bug happens (where ftrace fails to modify a location) it is
-helpful to have what was at that location as well as what was expected to
-be there.
-
-But with the conversion to text_poke() the variable that assigns the
-expected for debugging was dropped. Unfortunately, I noticed this when I
-needed it. Add it back.
-
-Link: https://lkml.kernel.org/r/20220726101851.069d2e70@gandalf.local.home
-
-Cc: "x86@kernel.org" <x86@kernel.org>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: Ingo Molnar <mingo@kernel.org>
-Cc: Borislav Petkov <bp@alien8.de>
-Cc: "H. Peter Anvin" <hpa@zytor.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: stable@vger.kernel.org
-Fixes: 768ae4406a5c ("x86/ftrace: Use text_poke()")
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/kernel/ftrace.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
-index 74c2f88a43d0..ceab28277546 100644
---- a/arch/x86/kernel/ftrace.c
-+++ b/arch/x86/kernel/ftrace.c
-@@ -93,6 +93,7 @@ static int ftrace_verify_code(unsigned long ip, const char *old_code)
-
- /* Make sure it is what we expect it to be */
- if (memcmp(cur_code, old_code, MCOUNT_INSN_SIZE) != 0) {
-+ ftrace_expected = old_code;
- WARN_ON(1);
- return -EINVAL;
- }
---
-2.35.1
-
+++ /dev/null
-From 3650b44badc32848799e20d0626bf23914a67b77 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 2 Aug 2022 15:20:33 +0800
-Subject: Input: gscps2 - check return value of ioremap() in gscps2_probe()
-
-From: Xie Shaowen <studentxswpy@163.com>
-
-[ Upstream commit e61b3125a4f036b3c6b87ffd656fc1ab00440ae9 ]
-
-The function ioremap() in gscps2_probe() can fail, so
-its return value should be checked.
-
-Fixes: 4bdc0d676a643 ("remove ioremap_nocache and devm_ioremap_nocache")
-Cc: <stable@vger.kernel.org> # v5.6+
-Reported-by: Hacash Robot <hacashRobot@santino.com>
-Signed-off-by: Xie Shaowen <studentxswpy@163.com>
-Signed-off-by: Helge Deller <deller@gmx.de>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/input/serio/gscps2.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c
-index a9065c6ab550..da2c67cb8642 100644
---- a/drivers/input/serio/gscps2.c
-+++ b/drivers/input/serio/gscps2.c
-@@ -350,6 +350,10 @@ static int __init gscps2_probe(struct parisc_device *dev)
- ps2port->port = serio;
- ps2port->padev = dev;
- ps2port->addr = ioremap(hpa, GSC_STATUS + 4);
-+ if (!ps2port->addr) {
-+ ret = -ENOMEM;
-+ goto fail_nomem;
-+ }
- spin_lock_init(&ps2port->lock);
-
- gscps2_reset(ps2port);
---
-2.35.1
-
+++ /dev/null
-From ce3eabf3448d5c7b76e15c2aab5be386774cf6fc Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 Jul 2022 22:20:40 -0700
-Subject: scsi: qla2xxx: edif: Fix dropped IKE message
-
-From: Quinn Tran <qutran@marvell.com>
-
-[ Upstream commit c019cd656e717349ff22d0c41d6fbfc773f48c52 ]
-
-This patch fixes IKE message being dropped due to error in processing Purex
-IOCB and Continuation IOCBs.
-
-Link: https://lore.kernel.org/r/20220713052045.10683-6-njavali@marvell.com
-Fixes: fac2807946c1 ("scsi: qla2xxx: edif: Add extraction of auth_els from the wire")
-Cc: stable@vger.kernel.org
-Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
-Signed-off-by: Quinn Tran <qutran@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_isr.c | 54 +++++++++++++++-------------------
- 1 file changed, 24 insertions(+), 30 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
-index ecbc0a5ffb3f..59f5918dca95 100644
---- a/drivers/scsi/qla2xxx/qla_isr.c
-+++ b/drivers/scsi/qla2xxx/qla_isr.c
-@@ -3707,12 +3707,11 @@ void qla24xx_nvme_ls4_iocb(struct scsi_qla_host *vha,
- * Return: 0 all iocbs has arrived, xx- all iocbs have not arrived.
- */
- static int qla_chk_cont_iocb_avail(struct scsi_qla_host *vha,
-- struct rsp_que *rsp, response_t *pkt)
-+ struct rsp_que *rsp, response_t *pkt, u32 rsp_q_in)
- {
-- int start_pkt_ring_index, end_pkt_ring_index, n_ring_index;
-- response_t *end_pkt;
-+ int start_pkt_ring_index;
-+ u32 iocb_cnt = 0;
- int rc = 0;
-- u32 rsp_q_in;
-
- if (pkt->entry_count == 1)
- return rc;
-@@ -3723,34 +3722,18 @@ static int qla_chk_cont_iocb_avail(struct scsi_qla_host *vha,
- else
- start_pkt_ring_index = rsp->ring_index - 1;
-
-- if ((start_pkt_ring_index + pkt->entry_count) >= rsp->length)
-- end_pkt_ring_index = start_pkt_ring_index + pkt->entry_count -
-- rsp->length - 1;
-+ if (rsp_q_in < start_pkt_ring_index)
-+ /* q in ptr is wrapped */
-+ iocb_cnt = rsp->length - start_pkt_ring_index + rsp_q_in;
- else
-- end_pkt_ring_index = start_pkt_ring_index + pkt->entry_count - 1;
-+ iocb_cnt = rsp_q_in - start_pkt_ring_index;
-
-- end_pkt = rsp->ring + end_pkt_ring_index;
--
-- /* next pkt = end_pkt + 1 */
-- n_ring_index = end_pkt_ring_index + 1;
-- if (n_ring_index >= rsp->length)
-- n_ring_index = 0;
--
-- rsp_q_in = rsp->qpair->use_shadow_reg ? *rsp->in_ptr :
-- rd_reg_dword(rsp->rsp_q_in);
--
-- /* rsp_q_in is either wrapped or pointing beyond endpkt */
-- if ((rsp_q_in < start_pkt_ring_index && rsp_q_in < n_ring_index) ||
-- rsp_q_in >= n_ring_index)
-- /* all IOCBs arrived. */
-- rc = 0;
-- else
-+ if (iocb_cnt < pkt->entry_count)
- rc = -EIO;
-
-- ql_dbg(ql_dbg_init + ql_dbg_verbose, vha, 0x5091,
-- "%s - ring %p pkt %p end pkt %p entry count %#x rsp_q_in %d rc %d\n",
-- __func__, rsp->ring, pkt, end_pkt, pkt->entry_count,
-- rsp_q_in, rc);
-+ ql_dbg(ql_dbg_init, vha, 0x5091,
-+ "%s - ring %p pkt %p entry count %d iocb_cnt %d rsp_q_in %d rc %d\n",
-+ __func__, rsp->ring, pkt, pkt->entry_count, iocb_cnt, rsp_q_in, rc);
-
- return rc;
- }
-@@ -3767,7 +3750,7 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
- struct qla_hw_data *ha = vha->hw;
- struct purex_entry_24xx *purex_entry;
- struct purex_item *pure_item;
-- u16 rsp_in = 0;
-+ u16 rsp_in = 0, cur_ring_index;
- int follow_inptr, is_shadow_hba;
-
- if (!ha->flags.fw_started)
-@@ -3798,6 +3781,7 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
- (!follow_inptr &&
- rsp->ring_ptr->signature != RESPONSE_PROCESSED)) {
- pkt = (struct sts_entry_24xx *)rsp->ring_ptr;
-+ cur_ring_index = rsp->ring_index;
-
- rsp->ring_index++;
- if (rsp->ring_index == rsp->length) {
-@@ -3918,7 +3902,17 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
- break;
-
- case ELS_AUTH_ELS:
-- if (qla_chk_cont_iocb_avail(vha, rsp, (response_t *)pkt)) {
-+ if (qla_chk_cont_iocb_avail(vha, rsp, (response_t *)pkt, rsp_in)) {
-+ /*
-+ * ring_ptr and ring_index were
-+ * pre-incremented above. Reset them
-+ * back to current. Wait for next
-+ * interrupt with all IOCBs to arrive
-+ * and re-process.
-+ */
-+ rsp->ring_ptr = (response_t *)pkt;
-+ rsp->ring_index = cur_ring_index;
-+
- ql_dbg(ql_dbg_init, vha, 0x5091,
- "Defer processing ELS opcode %#x...\n",
- purex_entry->els_frame_payload[3]);
---
-2.35.1
-
+++ /dev/null
-From 5022d7f75a959f35a10caa156f7872f76f101346 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:02 -0700
-Subject: scsi: qla2xxx: Fix crash due to stale SRB access around I/O timeouts
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit c39587bc0abaf16593f7abcdf8aeec3c038c7d52 ]
-
-Ensure SRB is returned during I/O timeout error escalation. If that is not
-possible fail the escalation path.
-
-Following crash stack was seen:
-
-BUG: unable to handle kernel paging request at 0000002f56aa90f8
-IP: qla_chk_edif_rx_sa_delete_pending+0x14/0x30 [qla2xxx]
-Call Trace:
- ? qla2x00_status_entry+0x19f/0x1c50 [qla2xxx]
- ? qla2x00_start_sp+0x116/0x1170 [qla2xxx]
- ? dma_pool_alloc+0x1d6/0x210
- ? mempool_alloc+0x54/0x130
- ? qla24xx_process_response_queue+0x548/0x12b0 [qla2xxx]
- ? qla_do_work+0x2d/0x40 [qla2xxx]
- ? process_one_work+0x14c/0x390
-
-Link: https://lore.kernel.org/r/20220616053508.27186-6-njavali@marvell.com
-Fixes: d74595278f4a ("scsi: qla2xxx: Add multiple queue pair functionality.")
-Cc: stable@vger.kernel.org
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_os.c | 43 +++++++++++++++++++++++++----------
- 1 file changed, 31 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
-index eca622f3e8c1..6542a258cb75 100644
---- a/drivers/scsi/qla2xxx/qla_os.c
-+++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -1338,21 +1338,20 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
- /*
- * Returns: QLA_SUCCESS or QLA_FUNCTION_FAILED.
- */
--int
--qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *vha, unsigned int t,
-- uint64_t l, enum nexus_wait_type type)
-+static int
-+__qla2x00_eh_wait_for_pending_commands(struct qla_qpair *qpair, unsigned int t,
-+ uint64_t l, enum nexus_wait_type type)
- {
- int cnt, match, status;
- unsigned long flags;
-- struct qla_hw_data *ha = vha->hw;
-- struct req_que *req;
-+ scsi_qla_host_t *vha = qpair->vha;
-+ struct req_que *req = qpair->req;
- srb_t *sp;
- struct scsi_cmnd *cmd;
-
- status = QLA_SUCCESS;
-
-- spin_lock_irqsave(&ha->hardware_lock, flags);
-- req = vha->req;
-+ spin_lock_irqsave(qpair->qp_lock_ptr, flags);
- for (cnt = 1; status == QLA_SUCCESS &&
- cnt < req->num_outstanding_cmds; cnt++) {
- sp = req->outstanding_cmds[cnt];
-@@ -1379,12 +1378,32 @@ qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *vha, unsigned int t,
- if (!match)
- continue;
-
-- spin_unlock_irqrestore(&ha->hardware_lock, flags);
-+ spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
- status = qla2x00_eh_wait_on_command(cmd);
-- spin_lock_irqsave(&ha->hardware_lock, flags);
-+ spin_lock_irqsave(qpair->qp_lock_ptr, flags);
- }
-- spin_unlock_irqrestore(&ha->hardware_lock, flags);
-+ spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
-+
-+ return status;
-+}
-+
-+int
-+qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *vha, unsigned int t,
-+ uint64_t l, enum nexus_wait_type type)
-+{
-+ struct qla_qpair *qpair;
-+ struct qla_hw_data *ha = vha->hw;
-+ int i, status = QLA_SUCCESS;
-
-+ status = __qla2x00_eh_wait_for_pending_commands(ha->base_qpair, t, l,
-+ type);
-+ for (i = 0; status == QLA_SUCCESS && i < ha->max_qpairs; i++) {
-+ qpair = ha->queue_pair_map[i];
-+ if (!qpair)
-+ continue;
-+ status = __qla2x00_eh_wait_for_pending_commands(qpair, t, l,
-+ type);
-+ }
- return status;
- }
-
-@@ -1421,7 +1440,7 @@ qla2xxx_eh_device_reset(struct scsi_cmnd *cmd)
- return err;
-
- if (fcport->deleted)
-- return SUCCESS;
-+ return FAILED;
-
- ql_log(ql_log_info, vha, 0x8009,
- "DEVICE RESET ISSUED nexus=%ld:%d:%llu cmd=%p.\n", vha->host_no,
-@@ -1489,7 +1508,7 @@ qla2xxx_eh_target_reset(struct scsi_cmnd *cmd)
- return err;
-
- if (fcport->deleted)
-- return SUCCESS;
-+ return FAILED;
-
- ql_log(ql_log_info, vha, 0x8009,
- "TARGET RESET ISSUED nexus=%ld:%d cmd=%p.\n", vha->host_no,
---
-2.35.1
-
+++ /dev/null
-From 0b4b66987bf3e1b6dc2f81496653d7ff9b38b5ec Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 Jul 2022 22:20:42 -0700
-Subject: scsi: qla2xxx: Fix discovery issues in FC-AL topology
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit 47ccb113cead905bdc236571bf8ac6fed90321b3 ]
-
-A direct attach tape device, when gets swapped with another, was not
-discovered. Fix this by looking at loop map and reinitialize link if there
-are devices present.
-
-Link: https://lore.kernel.org/linux-scsi/baef87c3-5dad-3b47-44c1-6914bfc90108@cybernetics.com/
-Link: https://lore.kernel.org/r/20220713052045.10683-8-njavali@marvell.com
-Cc: stable@vger.kernel.org
-Reported-by: Tony Battersby <tonyb@cybernetics.com>
-Tested-by: Tony Battersby <tonyb@cybernetics.com>
-Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_gbl.h | 3 ++-
- drivers/scsi/qla2xxx/qla_init.c | 29 +++++++++++++++++++++++++++++
- drivers/scsi/qla2xxx/qla_mbx.c | 5 ++++-
- 3 files changed, 35 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
-index db6ccdda740e..f82e4a348330 100644
---- a/drivers/scsi/qla2xxx/qla_gbl.h
-+++ b/drivers/scsi/qla2xxx/qla_gbl.h
-@@ -435,7 +435,8 @@ extern int
- qla2x00_get_resource_cnts(scsi_qla_host_t *);
-
- extern int
--qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map);
-+qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map,
-+ u8 *num_entries);
-
- extern int
- qla2x00_get_link_status(scsi_qla_host_t *, uint16_t, struct link_statistics *,
-diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
-index b61a56e1b9a7..b81797a3ab61 100644
---- a/drivers/scsi/qla2xxx/qla_init.c
-+++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -5521,6 +5521,22 @@ static int qla2x00_configure_n2n_loop(scsi_qla_host_t *vha)
- return QLA_FUNCTION_FAILED;
- }
-
-+static void
-+qla_reinitialize_link(scsi_qla_host_t *vha)
-+{
-+ int rval;
-+
-+ atomic_set(&vha->loop_state, LOOP_DOWN);
-+ atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME);
-+ rval = qla2x00_full_login_lip(vha);
-+ if (rval == QLA_SUCCESS) {
-+ ql_dbg(ql_dbg_disc, vha, 0xd050, "Link reinitialized\n");
-+ } else {
-+ ql_dbg(ql_dbg_disc, vha, 0xd051,
-+ "Link reinitialization failed (%d)\n", rval);
-+ }
-+}
-+
- /*
- * qla2x00_configure_local_loop
- * Updates Fibre Channel Device Database with local loop devices.
-@@ -5572,6 +5588,19 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha)
- spin_unlock_irqrestore(&vha->work_lock, flags);
-
- if (vha->scan.scan_retry < MAX_SCAN_RETRIES) {
-+ u8 loop_map_entries = 0;
-+ int rc;
-+
-+ rc = qla2x00_get_fcal_position_map(vha, NULL,
-+ &loop_map_entries);
-+ if (rc == QLA_SUCCESS && loop_map_entries > 1) {
-+ /*
-+ * There are devices that are still not logged
-+ * in. Reinitialize to give them a chance.
-+ */
-+ qla_reinitialize_link(vha);
-+ return QLA_FUNCTION_FAILED;
-+ }
- set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
- set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
- }
-diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
-index 951f90035449..5bcb8da4360f 100644
---- a/drivers/scsi/qla2xxx/qla_mbx.c
-+++ b/drivers/scsi/qla2xxx/qla_mbx.c
-@@ -3062,7 +3062,8 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *vha)
- * Kernel context.
- */
- int
--qla2x00_get_fcal_position_map(scsi_qla_host_t *vha, char *pos_map)
-+qla2x00_get_fcal_position_map(scsi_qla_host_t *vha, char *pos_map,
-+ u8 *num_entries)
- {
- int rval;
- mbx_cmd_t mc;
-@@ -3102,6 +3103,8 @@ qla2x00_get_fcal_position_map(scsi_qla_host_t *vha, char *pos_map)
-
- if (pos_map)
- memcpy(pos_map, pmap, FCAL_MAP_SIZE);
-+ if (num_entries)
-+ *num_entries = pmap[0];
- }
- dma_pool_free(ha->s_dma_pool, pmap, pmap_dma);
-
---
-2.35.1
-
+++ /dev/null
-From e6f07ae0f8b10d076fd632535cf706e64a4b06f3 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:07 -0700
-Subject: scsi: qla2xxx: Fix erroneous mailbox timeout after PCI error
- injection
-
-From: Quinn Tran <qutran@marvell.com>
-
-[ Upstream commit f260694e6463b63ae550aad25ddefe94cb1904da ]
-
-Clear wait for mailbox interrupt flag to prevent stale mailbox:
-
-Feb 22 05:22:56 ltcden4-lp7 kernel: qla2xxx [0135:90:00.1]-500a:4: LOOP UP detected (16 Gbps).
-Feb 22 05:22:59 ltcden4-lp7 kernel: qla2xxx [0135:90:00.1]-d04c:4: MBX Command timeout for cmd 69, ...
-
-To fix the issue, driver needs to clear the MBX_INTR_WAIT flag on purging
-the mailbox. When the stale mailbox completion does arrive, it will be
-dropped.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-11-njavali@marvell.com
-Fixes: b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request")
-Cc: Naresh Bannoth <nbannoth@in.ibm.com>
-Cc: Kyle Mahlkuch <Kyle.Mahlkuch@ibm.com>
-Cc: stable@vger.kernel.org
-Reported-by: Naresh Bannoth <nbannoth@in.ibm.com>
-Tested-by: Naresh Bannoth <nbannoth@in.ibm.com>
-Signed-off-by: Quinn Tran <qutran@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_mbx.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
-index 5f2594d3d4f9..951f90035449 100644
---- a/drivers/scsi/qla2xxx/qla_mbx.c
-+++ b/drivers/scsi/qla2xxx/qla_mbx.c
-@@ -276,6 +276,12 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
- atomic_inc(&ha->num_pend_mbx_stage3);
- if (!wait_for_completion_timeout(&ha->mbx_intr_comp,
- mcp->tov * HZ)) {
-+ ql_dbg(ql_dbg_mbx, vha, 0x117a,
-+ "cmd=%x Timeout.\n", command);
-+ spin_lock_irqsave(&ha->hardware_lock, flags);
-+ clear_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
-+ spin_unlock_irqrestore(&ha->hardware_lock, flags);
-+
- if (chip_reset != ha->chip_reset) {
- eeh_delay = ha->flags.eeh_busy ? 1 : 0;
-
-@@ -288,12 +294,6 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
- rval = QLA_ABORTED;
- goto premature_exit;
- }
-- ql_dbg(ql_dbg_mbx, vha, 0x117a,
-- "cmd=%x Timeout.\n", command);
-- spin_lock_irqsave(&ha->hardware_lock, flags);
-- clear_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
-- spin_unlock_irqrestore(&ha->hardware_lock, flags);
--
- } else if (ha->flags.purge_mbox ||
- chip_reset != ha->chip_reset) {
- eeh_delay = ha->flags.eeh_busy ? 1 : 0;
---
-2.35.1
-
+++ /dev/null
-From e0e9abd03bd5742d62ac45c7517382dc7d2267f8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:34:58 -0700
-Subject: scsi: qla2xxx: Fix excessive I/O error messages by default
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit bff4873c709085e09d0ffae0c25b8e65256e3205 ]
-
-Disable printing I/O error messages by default. The messages will be
-printed only when logging was enabled.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-2-njavali@marvell.com
-Fixes: 8e2d81c6b5be ("scsi: qla2xxx: Fix excessive messages during device logout")
-Cc: stable@vger.kernel.org
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_isr.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
-index c41a965eb4a7..6c71e0fd4942 100644
---- a/drivers/scsi/qla2xxx/qla_isr.c
-+++ b/drivers/scsi/qla2xxx/qla_isr.c
-@@ -2633,7 +2633,7 @@ static void qla24xx_nvme_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
- }
-
- if (unlikely(logit))
-- ql_log(ql_dbg_io, fcport->vha, 0x5060,
-+ ql_dbg(ql_dbg_io, fcport->vha, 0x5060,
- "NVME-%s ERR Handling - hdl=%x status(%x) tr_len:%x resid=%x ox_id=%x\n",
- sp->name, sp->handle, comp_status,
- fd->transferred_length, le32_to_cpu(sts->residual_len),
-@@ -3491,7 +3491,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
-
- out:
- if (logit)
-- ql_log(ql_dbg_io, fcport->vha, 0x3022,
-+ ql_dbg(ql_dbg_io, fcport->vha, 0x3022,
- "FCP command status: 0x%x-0x%x (0x%x) nexus=%ld:%d:%llu portid=%02x%02x%02x oxid=0x%x cdb=%10phN len=0x%x rsp_info=0x%x resid=0x%x fw_resid=0x%x sp=%p cp=%p.\n",
- comp_status, scsi_status, res, vha->host_no,
- cp->device->id, cp->device->lun, fcport->d_id.b.domain,
---
-2.35.1
-
+++ /dev/null
-From 2d6af9bb8469e163a0afa2552f0e5edb03b41a1b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 Jul 2022 22:20:41 -0700
-Subject: scsi: qla2xxx: Fix imbalance vha->vref_count
-
-From: Quinn Tran <qutran@marvell.com>
-
-[ Upstream commit 63fa7f2644b4b48e1913af33092c044bf48e9321 ]
-
-vref_count took an extra decrement in the task management path. Add an
-extra ref count to compensate the imbalance.
-
-Link: https://lore.kernel.org/r/20220713052045.10683-7-njavali@marvell.com
-Cc: stable@vger.kernel.org
-Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
-Signed-off-by: Quinn Tran <qutran@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_init.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
-index ab08ab206abc..b61a56e1b9a7 100644
---- a/drivers/scsi/qla2xxx/qla_init.c
-+++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -168,6 +168,7 @@ int qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
- struct srb_iocb *abt_iocb;
- srb_t *sp;
- int rval = QLA_FUNCTION_FAILED;
-+ uint8_t bail;
-
- /* ref: INIT for ABTS command */
- sp = qla2xxx_get_qpair_sp(cmd_sp->vha, cmd_sp->qpair, cmd_sp->fcport,
-@@ -175,6 +176,7 @@ int qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
- if (!sp)
- return QLA_MEMORY_ALLOC_FAILED;
-
-+ QLA_VHA_MARK_BUSY(vha, bail);
- abt_iocb = &sp->u.iocb_cmd;
- sp->type = SRB_ABT_CMD;
- sp->name = "abort";
-@@ -2020,12 +2022,14 @@ qla2x00_async_tm_cmd(fc_port_t *fcport, uint32_t flags, uint32_t lun,
- struct srb_iocb *tm_iocb;
- srb_t *sp;
- int rval = QLA_FUNCTION_FAILED;
-+ uint8_t bail;
-
- /* ref: INIT */
- sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
- if (!sp)
- goto done;
-
-+ QLA_VHA_MARK_BUSY(vha, bail);
- sp->type = SRB_TM_CMD;
- sp->name = "tmf";
- qla2x00_init_async_sp(sp, qla2x00_get_async_timeout(vha),
---
-2.35.1
-
+++ /dev/null
-From 1a1e0916c6e933835567aa7c8daaca4a0b066e06 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:03 -0700
-Subject: scsi: qla2xxx: Fix losing FCP-2 targets during port perturbation
- tests
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit 58d1c124cd79ea686b512043c5bd515590b2ed95 ]
-
-When a mix of FCP-2 (tape) and non-FCP-2 targets are present, FCP-2 target
-state was incorrectly transitioned when both of the targets were gone. Fix
-this by ignoring state transition for FCP-2 targets.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-7-njavali@marvell.com
-Fixes: 44c57f205876 ("scsi: qla2xxx: Changes to support FCP2 Target")
-Cc: stable@vger.kernel.org
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_gs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
-index 2c49f12078ac..d3742a83d2fd 100644
---- a/drivers/scsi/qla2xxx/qla_gs.c
-+++ b/drivers/scsi/qla2xxx/qla_gs.c
-@@ -3628,7 +3628,7 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
- do_delete) {
- if (fcport->loop_id != FC_NO_LOOP_ID) {
- if (fcport->flags & FCF_FCP2_DEVICE)
-- fcport->logout_on_delete = 0;
-+ continue;
-
- ql_log(ql_log_warn, vha, 0x20f0,
- "%s %d %8phC post del sess\n",
---
-2.35.1
-
+++ /dev/null
-From 2eba983f6446ec2ca5460d266c2e0b6b8fd70b2d Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:06 -0700
-Subject: scsi: qla2xxx: Fix losing FCP-2 targets on long port disable with
- I/Os
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit 2416ccd3815ba1613e10a6da0a24ef21acfe5633 ]
-
-FCP-2 devices were not coming back online once they were lost, login
-retries exhausted, and then came back up. Fix this by accepting RSCN when
-the device is not online.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-10-njavali@marvell.com
-Fixes: 44c57f205876 ("scsi: qla2xxx: Changes to support FCP2 Target")
-Cc: stable@vger.kernel.org
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_init.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
-index 2f1fba2a014a..ab08ab206abc 100644
---- a/drivers/scsi/qla2xxx/qla_init.c
-+++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -1834,7 +1834,8 @@ void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea)
- case RSCN_PORT_ADDR:
- fcport = qla2x00_find_fcport_by_nportid(vha, &ea->id, 1);
- if (fcport) {
-- if (fcport->flags & FCF_FCP2_DEVICE) {
-+ if (fcport->flags & FCF_FCP2_DEVICE &&
-+ atomic_read(&fcport->state) == FCS_ONLINE) {
- ql_dbg(ql_dbg_disc, vha, 0x2115,
- "Delaying session delete for FCP2 portid=%06x %8phC ",
- fcport->d_id.b24, fcport->port_name);
-@@ -1866,7 +1867,8 @@ void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea)
- break;
- case RSCN_AREA_ADDR:
- list_for_each_entry(fcport, &vha->vp_fcports, list) {
-- if (fcport->flags & FCF_FCP2_DEVICE)
-+ if (fcport->flags & FCF_FCP2_DEVICE &&
-+ atomic_read(&fcport->state) == FCS_ONLINE)
- continue;
-
- if ((ea->id.b24 & 0xffff00) == (fcport->d_id.b24 & 0xffff00)) {
-@@ -1877,7 +1879,8 @@ void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea)
- break;
- case RSCN_DOM_ADDR:
- list_for_each_entry(fcport, &vha->vp_fcports, list) {
-- if (fcport->flags & FCF_FCP2_DEVICE)
-+ if (fcport->flags & FCF_FCP2_DEVICE &&
-+ atomic_read(&fcport->state) == FCS_ONLINE)
- continue;
-
- if ((ea->id.b24 & 0xff0000) == (fcport->d_id.b24 & 0xff0000)) {
-@@ -1889,7 +1892,8 @@ void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea)
- case RSCN_FAB_ADDR:
- default:
- list_for_each_entry(fcport, &vha->vp_fcports, list) {
-- if (fcport->flags & FCF_FCP2_DEVICE)
-+ if (fcport->flags & FCF_FCP2_DEVICE &&
-+ atomic_read(&fcport->state) == FCS_ONLINE)
- continue;
-
- fcport->scan_needed = 1;
---
-2.35.1
-
+++ /dev/null
-From f716ebbcca6fd9461d2fea1b920aa18c48915ca1 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:04 -0700
-Subject: scsi: qla2xxx: Fix losing target when it reappears during delete
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit 118b0c863c8f5629cc5271fc24d72d926e0715d9 ]
-
-FC target disappeared during port perturbation tests due to a race that
-tramples target state. Fix the issue by adding state checks before
-proceeding.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-8-njavali@marvell.com
-Fixes: 44c57f205876 ("scsi: qla2xxx: Changes to support FCP2 Target")
-Cc: stable@vger.kernel.org
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_attr.c | 24 +++++++++++++++++-------
- 1 file changed, 17 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
-index bd4ebc1b5c1e..a302ed8b610f 100644
---- a/drivers/scsi/qla2xxx/qla_attr.c
-+++ b/drivers/scsi/qla2xxx/qla_attr.c
-@@ -2705,17 +2705,24 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
- if (!fcport)
- return;
-
-- /* Now that the rport has been deleted, set the fcport state to
-- FCS_DEVICE_DEAD */
-- qla2x00_set_fcport_state(fcport, FCS_DEVICE_DEAD);
-+
-+ /*
-+ * Now that the rport has been deleted, set the fcport state to
-+ * FCS_DEVICE_DEAD, if the fcport is still lost.
-+ */
-+ if (fcport->scan_state != QLA_FCPORT_FOUND)
-+ qla2x00_set_fcport_state(fcport, FCS_DEVICE_DEAD);
-
- /*
- * Transport has effectively 'deleted' the rport, clear
- * all local references.
- */
- spin_lock_irqsave(host->host_lock, flags);
-- fcport->rport = fcport->drport = NULL;
-- *((fc_port_t **)rport->dd_data) = NULL;
-+ /* Confirm port has not reappeared before clearing pointers. */
-+ if (rport->port_state != FC_PORTSTATE_ONLINE) {
-+ fcport->rport = fcport->drport = NULL;
-+ *((fc_port_t **)rport->dd_data) = NULL;
-+ }
- spin_unlock_irqrestore(host->host_lock, flags);
-
- if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
-@@ -2748,9 +2755,12 @@ qla2x00_terminate_rport_io(struct fc_rport *rport)
- /*
- * At this point all fcport's software-states are cleared. Perform any
- * final cleanup of firmware resources (PCBs and XCBs).
-+ *
-+ * Attempt to cleanup only lost devices.
- */
- if (fcport->loop_id != FC_NO_LOOP_ID) {
-- if (IS_FWI2_CAPABLE(fcport->vha->hw)) {
-+ if (IS_FWI2_CAPABLE(fcport->vha->hw) &&
-+ fcport->scan_state != QLA_FCPORT_FOUND) {
- if (fcport->loop_id != FC_NO_LOOP_ID)
- fcport->logout_on_delete = 1;
-
-@@ -2760,7 +2770,7 @@ qla2x00_terminate_rport_io(struct fc_rport *rport)
- __LINE__);
- qlt_schedule_sess_for_deletion(fcport);
- }
-- } else {
-+ } else if (!IS_FWI2_CAPABLE(fcport->vha->hw)) {
- qla2x00_port_logout(fcport->vha, fcport);
- }
- }
---
-2.35.1
-
+++ /dev/null
-From b85888be1f0e34cb530cdf984eedaf5f9ca2f63f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 Jul 2022 22:20:39 -0700
-Subject: scsi: qla2xxx: Fix response queue handler reading stale packets
-
-From: Arun Easi <aeasi@marvell.com>
-
-[ Upstream commit b1f707146923335849fb70237eec27d4d1ae7d62 ]
-
-On some platforms, the current logic of relying on finding new packet
-solely based on signature pattern can lead to driver reading stale
-packets. Though this is a bug in those platforms, reduce such exposures by
-limiting reading packets until the IN pointer.
-
-Two module parameters are introduced:
-
- ql2xrspq_follow_inptr:
-
- When set, on newer adapters that has queue pointer shadowing, look for
- response packets only until response queue in pointer.
-
- When reset, response packets are read based on a signature pattern
- logic (old way).
-
- ql2xrspq_follow_inptr_legacy:
-
- Like ql2xrspq_follow_inptr, but for those adapters where there is no
- queue pointer shadowing.
-
-Link: https://lore.kernel.org/r/20220713052045.10683-5-njavali@marvell.com
-Cc: stable@vger.kernel.org
-Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
-Signed-off-by: Arun Easi <aeasi@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_gbl.h | 2 ++
- drivers/scsi/qla2xxx/qla_isr.c | 24 +++++++++++++++++++++++-
- drivers/scsi/qla2xxx/qla_os.c | 10 ++++++++++
- 3 files changed, 35 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
-index 2f6afdbd2dfa..db6ccdda740e 100644
---- a/drivers/scsi/qla2xxx/qla_gbl.h
-+++ b/drivers/scsi/qla2xxx/qla_gbl.h
-@@ -192,6 +192,8 @@ extern int ql2xfulldump_on_mpifail;
- extern int ql2xsecenable;
- extern int ql2xenforce_iocb_limit;
- extern int ql2xabts_wait_nvme;
-+extern int ql2xrspq_follow_inptr;
-+extern int ql2xrspq_follow_inptr_legacy;
-
- extern int qla2x00_loop_reset(scsi_qla_host_t *);
- extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
-diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
-index b218f9739619..ecbc0a5ffb3f 100644
---- a/drivers/scsi/qla2xxx/qla_isr.c
-+++ b/drivers/scsi/qla2xxx/qla_isr.c
-@@ -3767,6 +3767,8 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
- struct qla_hw_data *ha = vha->hw;
- struct purex_entry_24xx *purex_entry;
- struct purex_item *pure_item;
-+ u16 rsp_in = 0;
-+ int follow_inptr, is_shadow_hba;
-
- if (!ha->flags.fw_started)
- return;
-@@ -3776,7 +3778,25 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
- qla_cpu_update(rsp->qpair, smp_processor_id());
- }
-
-- while (rsp->ring_ptr->signature != RESPONSE_PROCESSED) {
-+#define __update_rsp_in(_update, _is_shadow_hba, _rsp, _rsp_in) \
-+ do { \
-+ if (_update) { \
-+ _rsp_in = _is_shadow_hba ? *(_rsp)->in_ptr : \
-+ rd_reg_dword_relaxed((_rsp)->rsp_q_in); \
-+ } \
-+ } while (0)
-+
-+ is_shadow_hba = IS_SHADOW_REG_CAPABLE(ha);
-+ follow_inptr = is_shadow_hba ? ql2xrspq_follow_inptr :
-+ ql2xrspq_follow_inptr_legacy;
-+
-+ __update_rsp_in(follow_inptr, is_shadow_hba, rsp, rsp_in);
-+
-+ while ((likely(follow_inptr &&
-+ rsp->ring_index != rsp_in &&
-+ rsp->ring_ptr->signature != RESPONSE_PROCESSED)) ||
-+ (!follow_inptr &&
-+ rsp->ring_ptr->signature != RESPONSE_PROCESSED)) {
- pkt = (struct sts_entry_24xx *)rsp->ring_ptr;
-
- rsp->ring_index++;
-@@ -3889,6 +3909,8 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
- }
- pure_item = qla27xx_copy_fpin_pkt(vha,
- (void **)&pkt, &rsp);
-+ __update_rsp_in(follow_inptr, is_shadow_hba,
-+ rsp, rsp_in);
- if (!pure_item)
- break;
- qla24xx_queue_purex_item(vha, pure_item,
-diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
-index 6542a258cb75..00e97f0a07eb 100644
---- a/drivers/scsi/qla2xxx/qla_os.c
-+++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -338,6 +338,16 @@ module_param(ql2xdelay_before_pci_error_handling, uint, 0644);
- MODULE_PARM_DESC(ql2xdelay_before_pci_error_handling,
- "Number of seconds delayed before qla begin PCI error self-handling (default: 5).\n");
-
-+int ql2xrspq_follow_inptr = 1;
-+module_param(ql2xrspq_follow_inptr, int, 0644);
-+MODULE_PARM_DESC(ql2xrspq_follow_inptr,
-+ "Follow RSP IN pointer for RSP updates for HBAs 27xx and newer (default: 1).");
-+
-+int ql2xrspq_follow_inptr_legacy = 1;
-+module_param(ql2xrspq_follow_inptr_legacy, int, 0644);
-+MODULE_PARM_DESC(ql2xrspq_follow_inptr_legacy,
-+ "Follow RSP IN pointer for RSP updates for HBAs older than 27XX. (default: 1).");
-+
- static void qla2x00_clear_drv_active(struct qla_hw_data *);
- static void qla2x00_free_device(scsi_qla_host_t *);
- static int qla2xxx_map_queues(struct Scsi_Host *shost);
---
-2.35.1
-
+++ /dev/null
-From a5fefe072ff838eb38ad9905a6c9eeeb513a6f02 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:01 -0700
-Subject: scsi: qla2xxx: Turn off multi-queue for 8G adapters
-
-From: Quinn Tran <qutran@marvell.com>
-
-[ Upstream commit 5304673bdb1635e27555bd636fd5d6956f1cd552 ]
-
-For 8G adapters, multi-queue was enabled accidentally. Make sure
-multi-queue is not enabled.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-5-njavali@marvell.com
-Cc: stable@vger.kernel.org
-Signed-off-by: Quinn Tran <qutran@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_def.h | 4 ++--
- drivers/scsi/qla2xxx/qla_isr.c | 16 ++++++----------
- 2 files changed, 8 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
-index 5e74c451bf4e..51c7ce5f9792 100644
---- a/drivers/scsi/qla2xxx/qla_def.h
-+++ b/drivers/scsi/qla2xxx/qla_def.h
-@@ -4265,8 +4265,8 @@ struct qla_hw_data {
- #define IS_OEM_001(ha) ((ha)->device_type & DT_OEM_001)
- #define HAS_EXTENDED_IDS(ha) ((ha)->device_type & DT_EXTENDED_IDS)
- #define IS_CT6_SUPPORTED(ha) ((ha)->device_type & DT_CT6_SUPPORTED)
--#define IS_MQUE_CAPABLE(ha) ((ha)->mqenable || IS_QLA83XX(ha) || \
-- IS_QLA27XX(ha) || IS_QLA28XX(ha))
-+#define IS_MQUE_CAPABLE(ha) (IS_QLA83XX(ha) || IS_QLA27XX(ha) || \
-+ IS_QLA28XX(ha))
- #define IS_BIDI_CAPABLE(ha) \
- (IS_QLA25XX(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha))
- /* Bit 21 of fw_attributes decides the MCTP capabilities */
-diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
-index 6c71e0fd4942..b218f9739619 100644
---- a/drivers/scsi/qla2xxx/qla_isr.c
-+++ b/drivers/scsi/qla2xxx/qla_isr.c
-@@ -4415,16 +4415,12 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
- }
-
- /* Enable MSI-X vector for response queue update for queue 0 */
-- if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
-- if (ha->msixbase && ha->mqiobase &&
-- (ha->max_rsp_queues > 1 || ha->max_req_queues > 1 ||
-- ql2xmqsupport))
-- ha->mqenable = 1;
-- } else
-- if (ha->mqiobase &&
-- (ha->max_rsp_queues > 1 || ha->max_req_queues > 1 ||
-- ql2xmqsupport))
-- ha->mqenable = 1;
-+ if (IS_MQUE_CAPABLE(ha) &&
-+ (ha->msixbase && ha->mqiobase && ha->max_qpairs))
-+ ha->mqenable = 1;
-+ else
-+ ha->mqenable = 0;
-+
- ql_dbg(ql_dbg_multiq, vha, 0xc005,
- "mqiobase=%p, max_rsp_queues=%d, max_req_queues=%d.\n",
- ha->mqiobase, ha->max_rsp_queues, ha->max_req_queues);
---
-2.35.1
-
+++ /dev/null
-From 318142b652409d6495f685168c5d8ef1539dbd9e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 12 Jul 2022 22:20:44 -0700
-Subject: scsi: qla2xxx: Update manufacturer details
-
-From: Bikash Hazarika <bhazarika@marvell.com>
-
-[ Upstream commit 1ccad27716ecad1fd58c35e579bedb81fa5e1ad5 ]
-
-Update manufacturer details to indicate Marvell Semiconductors.
-
-Link: https://lore.kernel.org/r/20220713052045.10683-10-njavali@marvell.com
-Cc: stable@vger.kernel.org
-Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
-Signed-off-by: Bikash Hazarika <bhazarika@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_def.h | 2 +-
- drivers/scsi/qla2xxx/qla_gs.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
-index 51c7ce5f9792..c906b45ff76a 100644
---- a/drivers/scsi/qla2xxx/qla_def.h
-+++ b/drivers/scsi/qla2xxx/qla_def.h
-@@ -78,7 +78,7 @@ typedef union {
- #include "qla_nvme.h"
- #define QLA2XXX_DRIVER_NAME "qla2xxx"
- #define QLA2XXX_APIDEV "ql2xapidev"
--#define QLA2XXX_MANUFACTURER "QLogic Corporation"
-+#define QLA2XXX_MANUFACTURER "Marvell Semiconductor, Inc."
-
- /*
- * We have MAILBOX_REGISTER_COUNT sized arrays in a few places,
-diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
-index d3742a83d2fd..b0f3bf42c340 100644
---- a/drivers/scsi/qla2xxx/qla_gs.c
-+++ b/drivers/scsi/qla2xxx/qla_gs.c
-@@ -1615,7 +1615,7 @@ qla2x00_hba_attributes(scsi_qla_host_t *vha, void *entries,
- eiter->type = cpu_to_be16(FDMI_HBA_MANUFACTURER);
- alen = scnprintf(
- eiter->a.manufacturer, sizeof(eiter->a.manufacturer),
-- "%s", "QLogic Corporation");
-+ "%s", QLA2XXX_MANUFACTURER);
- alen += FDMI_ATTR_ALIGNMENT(alen);
- alen += FDMI_ATTR_TYPELEN(eiter);
- eiter->len = cpu_to_be16(alen);
---
-2.35.1
-
+++ /dev/null
-From f2fbb80e0df228b61cec2944fe21ed09e396ecdf Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 15 Jun 2022 22:35:00 -0700
-Subject: scsi: qla2xxx: Wind down adapter after PCIe error
-
-From: Quinn Tran <qutran@marvell.com>
-
-[ Upstream commit d3117c83ba316b3200d9f2fe900f2b9a5525a25c ]
-
-Put adapter into a wind down state if OS does not make any attempt to
-recover the adapter after PCIe error.
-
-Link: https://lore.kernel.org/r/20220616053508.27186-4-njavali@marvell.com
-Cc: stable@vger.kernel.org
-Signed-off-by: Quinn Tran <qutran@marvell.com>
-Signed-off-by: Nilesh Javali <njavali@marvell.com>
-Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/scsi/qla2xxx/qla_bsg.c | 10 ++++++-
- drivers/scsi/qla2xxx/qla_def.h | 4 +++
- drivers/scsi/qla2xxx/qla_init.c | 20 ++++++++++++++
- drivers/scsi/qla2xxx/qla_os.c | 48 +++++++++++++++++++++++++++++++++
- 4 files changed, 81 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/qla2xxx/qla_bsg.c b/drivers/scsi/qla2xxx/qla_bsg.c
-index c636165be52b..3650f16cab6c 100644
---- a/drivers/scsi/qla2xxx/qla_bsg.c
-+++ b/drivers/scsi/qla2xxx/qla_bsg.c
-@@ -2972,6 +2972,13 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
-
- ql_log(ql_log_info, vha, 0x708b, "%s CMD timeout. bsg ptr %p.\n",
- __func__, bsg_job);
-+
-+ if (qla2x00_isp_reg_stat(ha)) {
-+ ql_log(ql_log_info, vha, 0x9007,
-+ "PCI/Register disconnect.\n");
-+ qla_pci_set_eeh_busy(vha);
-+ }
-+
- /* find the bsg job from the active list of commands */
- spin_lock_irqsave(&ha->hardware_lock, flags);
- for (que = 0; que < ha->max_req_queues; que++) {
-@@ -2989,7 +2996,8 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
- sp->u.bsg_job == bsg_job) {
- req->outstanding_cmds[cnt] = NULL;
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
-- if (ha->isp_ops->abort_command(sp)) {
-+
-+ if (!ha->flags.eeh_busy && ha->isp_ops->abort_command(sp)) {
- ql_log(ql_log_warn, vha, 0x7089,
- "mbx abort_command failed.\n");
- bsg_reply->result = -EIO;
-diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
-index 4fc289815ccb..5e74c451bf4e 100644
---- a/drivers/scsi/qla2xxx/qla_def.h
-+++ b/drivers/scsi/qla2xxx/qla_def.h
-@@ -4045,6 +4045,9 @@ struct qla_hw_data {
- uint32_t n2n_fw_acc_sec:1;
- uint32_t plogi_template_valid:1;
- uint32_t port_isolated:1;
-+ uint32_t eeh_flush:2;
-+#define EEH_FLUSH_RDY 1
-+#define EEH_FLUSH_DONE 2
- } flags;
-
- uint16_t max_exchg;
-@@ -4079,6 +4082,7 @@ struct qla_hw_data {
- uint32_t rsp_que_len;
- uint32_t req_que_off;
- uint32_t rsp_que_off;
-+ unsigned long eeh_jif;
-
- /* Multi queue data structs */
- device_reg_t *mqiobase;
-diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
-index edc29d6ebb28..2f1fba2a014a 100644
---- a/drivers/scsi/qla2xxx/qla_init.c
-+++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -47,6 +47,7 @@ qla2x00_sp_timeout(struct timer_list *t)
- {
- srb_t *sp = from_timer(sp, t, u.iocb_cmd.timer);
- struct srb_iocb *iocb;
-+ scsi_qla_host_t *vha = sp->vha;
-
- WARN_ON(irqs_disabled());
- iocb = &sp->u.iocb_cmd;
-@@ -54,6 +55,12 @@ qla2x00_sp_timeout(struct timer_list *t)
-
- /* ref: TMR */
- kref_put(&sp->cmd_kref, qla2x00_sp_release);
-+
-+ if (vha && qla2x00_isp_reg_stat(vha->hw)) {
-+ ql_log(ql_log_info, vha, 0x9008,
-+ "PCI/Register disconnect.\n");
-+ qla_pci_set_eeh_busy(vha);
-+ }
- }
-
- void qla2x00_sp_free(srb_t *sp)
-@@ -9698,6 +9705,12 @@ int qla2xxx_disable_port(struct Scsi_Host *host)
-
- vha->hw->flags.port_isolated = 1;
-
-+ if (qla2x00_isp_reg_stat(vha->hw)) {
-+ ql_log(ql_log_info, vha, 0x9006,
-+ "PCI/Register disconnect, exiting.\n");
-+ qla_pci_set_eeh_busy(vha);
-+ return FAILED;
-+ }
- if (qla2x00_chip_is_down(vha))
- return 0;
-
-@@ -9713,6 +9726,13 @@ int qla2xxx_enable_port(struct Scsi_Host *host)
- {
- scsi_qla_host_t *vha = shost_priv(host);
-
-+ if (qla2x00_isp_reg_stat(vha->hw)) {
-+ ql_log(ql_log_info, vha, 0x9001,
-+ "PCI/Register disconnect, exiting.\n");
-+ qla_pci_set_eeh_busy(vha);
-+ return FAILED;
-+ }
-+
- vha->hw->flags.port_isolated = 0;
- /* Set the flag to 1, so that isp_abort can proceed */
- vha->flags.online = 1;
-diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
-index e87ad7e0dc94..eca622f3e8c1 100644
---- a/drivers/scsi/qla2xxx/qla_os.c
-+++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -333,6 +333,11 @@ MODULE_PARM_DESC(ql2xabts_wait_nvme,
- "To wait for ABTS response on I/O timeouts for NVMe. (default: 1)");
-
-
-+u32 ql2xdelay_before_pci_error_handling = 5;
-+module_param(ql2xdelay_before_pci_error_handling, uint, 0644);
-+MODULE_PARM_DESC(ql2xdelay_before_pci_error_handling,
-+ "Number of seconds delayed before qla begin PCI error self-handling (default: 5).\n");
-+
- static void qla2x00_clear_drv_active(struct qla_hw_data *);
- static void qla2x00_free_device(scsi_qla_host_t *);
- static int qla2xxx_map_queues(struct Scsi_Host *shost);
-@@ -7232,6 +7237,44 @@ static void qla_heart_beat(struct scsi_qla_host *vha, u16 dpc_started)
- }
- }
-
-+static void qla_wind_down_chip(scsi_qla_host_t *vha)
-+{
-+ struct qla_hw_data *ha = vha->hw;
-+
-+ if (!ha->flags.eeh_busy)
-+ return;
-+ if (ha->pci_error_state)
-+ /* system is trying to recover */
-+ return;
-+
-+ /*
-+ * Current system is not handling PCIE error. At this point, this is
-+ * best effort to wind down the adapter.
-+ */
-+ if (time_after_eq(jiffies, ha->eeh_jif + ql2xdelay_before_pci_error_handling * HZ) &&
-+ !ha->flags.eeh_flush) {
-+ ql_log(ql_log_info, vha, 0x9009,
-+ "PCI Error detected, attempting to reset hardware.\n");
-+
-+ ha->isp_ops->reset_chip(vha);
-+ ha->isp_ops->disable_intrs(ha);
-+
-+ ha->flags.eeh_flush = EEH_FLUSH_RDY;
-+ ha->eeh_jif = jiffies;
-+
-+ } else if (ha->flags.eeh_flush == EEH_FLUSH_RDY &&
-+ time_after_eq(jiffies, ha->eeh_jif + 5 * HZ)) {
-+ pci_clear_master(ha->pdev);
-+
-+ /* flush all command */
-+ qla2x00_abort_isp_cleanup(vha);
-+ ha->flags.eeh_flush = EEH_FLUSH_DONE;
-+
-+ ql_log(ql_log_info, vha, 0x900a,
-+ "PCI Error handling complete, all IOs aborted.\n");
-+ }
-+}
-+
- /**************************************************************************
- * qla2x00_timer
- *
-@@ -7255,6 +7298,8 @@ qla2x00_timer(struct timer_list *t)
- fc_port_t *fcport = NULL;
-
- if (ha->flags.eeh_busy) {
-+ qla_wind_down_chip(vha);
-+
- ql_dbg(ql_dbg_timer, vha, 0x6000,
- "EEH = %d, restarting timer.\n",
- ha->flags.eeh_busy);
-@@ -7835,6 +7880,9 @@ void qla_pci_set_eeh_busy(struct scsi_qla_host *vha)
-
- spin_lock_irqsave(&base_vha->work_lock, flags);
- if (!ha->flags.eeh_busy) {
-+ ha->eeh_jif = jiffies;
-+ ha->flags.eeh_flush = 0;
-+
- ha->flags.eeh_busy = 1;
- do_cleanup = true;
- }
---
-2.35.1
-
drm-mediatek-keep-dsi-as-lp00-before-dcs-cmds-transf.patch
crypto-blake2s-remove-shash-module.patch
drm-dp-mst-read-the-extended-dpcd-capabilities-durin.patch
-scsi-qla2xxx-fix-excessive-i-o-error-messages-by-def.patch
-scsi-qla2xxx-wind-down-adapter-after-pcie-error.patch-6065
-scsi-qla2xxx-turn-off-multi-queue-for-8g-adapters.patch-24759
-scsi-qla2xxx-fix-crash-due-to-stale-srb-access-aroun.patch
-scsi-qla2xxx-fix-losing-fcp-2-targets-during-port-pe.patch
-scsi-qla2xxx-fix-losing-target-when-it-reappears-dur.patch
-scsi-qla2xxx-fix-losing-fcp-2-targets-on-long-port-d.patch
-scsi-qla2xxx-fix-erroneous-mailbox-timeout-after-pci.patch
drm-vc4-drv-adopt-the-dma-configuration-from-the-hvs.patch
usbnet-smsc95xx-don-t-clear-read-only-phy-interrupt.patch
usbnet-smsc95xx-avoid-link-settings-race-on-interrup.patch
usbnet-smsc95xx-forward-phy-interrupts-to-phy-driver.patch
usbnet-smsc95xx-fix-deadlock-on-runtime-resume.patch
firmware-arm_scpi-ensure-scpi_info-is-not-assigned-i.patch
-__follow_mount_rcu-verify-that-mount_lock-remains-un.patch
scsi-lpfc-fix-eeh-support-for-nvme-i-o.patch
scsi-lpfc-sli-path-split-refactor-lpfc_iocbq.patch
scsi-lpfc-sli-path-split-refactor-fast-and-slow-path.patch
serial-8250-add-proper-clock-handling-for-oxsemi-pci.patch
tty-8250-add-support-for-brainboxes-px-cards.patch
dm-writecache-set-a-default-max_writeback_jobs.patch
-x86-olpc-fix-logical-not-is-only-applied-to-the-left.patch
topology-represent-clusters-of-cpus-within-a-die.patch
topology-sysfs-export-die-attributes-only-if-an-arch.patch
topology-sysfs-export-cluster-attributes-only-if-an-.patch
net-9p-initialize-the-iounit-field-during-fid-creati.patch
arm-remove-some-dead-code.patch
timekeeping-contribute-wall-clock-to-rng-on-time-cha.patch
-scsi-qla2xxx-fix-response-queue-handler-reading-stal.patch
-scsi-qla2xxx-edif-fix-dropped-ike-message.patch
-scsi-qla2xxx-fix-imbalance-vha-vref_count.patch-21291
-scsi-qla2xxx-fix-discovery-issues-in-fc-al-topology.patch-12842
-scsi-qla2xxx-update-manufacturer-details.patch
locking-csd_lock-change-csdlock_debug-from-early_par.patch
block-remove-the-struct-blk_queue_ctx-forward-declar.patch
block-don-t-allow-the-same-type-rq_qos-add-more-than.patch
-spmi-trace-fix-stack-out-of-bound-access-in-spmi-tra.patch
btrfs-ensure-pages-are-unlocked-on-cow_file_range-fa.patch
btrfs-reset-block-group-chunk-force-if-we-have-to-wa.patch
btrfs-properly-flag-filesystem-with-btrfs_feature_in.patch
kvm-nvmx-attempt-to-load-perf_global_ctrl-on-nvmx-xf.patch
dm-raid-fix-address-sanitizer-warning-in-raid_status.patch
dm-raid-fix-address-sanitizer-warning-in-raid_resume.patch
-ftrace-x86-add-back-ftrace_expected-assignment.patch-22490
tracing-add-__rel_loc-using-trace-event-macros.patch
tracing-avoid-warray-bounds-warning-for-__rel_loc-ma.patch
-input-gscps2-check-return-value-of-ioremap-in-gscps2.patch
-x86-kprobes-update-kcb-status-flag-after-singlestepp.patch
ext4-update-s_overhead_clusters-in-the-superblock-du.patch
ext4-fix-extent-status-tree-race-in-writeback-error-.patch
ext4-add-ext4_inode_has_xattr_space-macro-in-xattr.h.patch
+++ /dev/null
-From 2164f615c64d6f8549823f48cde9c7450e5e84d9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 27 Jun 2022 16:55:12 -0700
-Subject: spmi: trace: fix stack-out-of-bound access in SPMI tracing functions
-
-From: David Collins <quic_collinsd@quicinc.com>
-
-[ Upstream commit 2af28b241eea816e6f7668d1954f15894b45d7e3 ]
-
-trace_spmi_write_begin() and trace_spmi_read_end() both call
-memcpy() with a length of "len + 1". This leads to one extra
-byte being read beyond the end of the specified buffer. Fix
-this out-of-bound memory access by using a length of "len"
-instead.
-
-Here is a KASAN log showing the issue:
-
-BUG: KASAN: stack-out-of-bounds in trace_event_raw_event_spmi_read_end+0x1d0/0x234
-Read of size 2 at addr ffffffc0265b7540 by task thermal@2.0-ser/1314
-...
-Call trace:
- dump_backtrace+0x0/0x3e8
- show_stack+0x2c/0x3c
- dump_stack_lvl+0xdc/0x11c
- print_address_description+0x74/0x384
- kasan_report+0x188/0x268
- kasan_check_range+0x270/0x2b0
- memcpy+0x90/0xe8
- trace_event_raw_event_spmi_read_end+0x1d0/0x234
- spmi_read_cmd+0x294/0x3ac
- spmi_ext_register_readl+0x84/0x9c
- regmap_spmi_ext_read+0x144/0x1b0 [regmap_spmi]
- _regmap_raw_read+0x40c/0x754
- regmap_raw_read+0x3a0/0x514
- regmap_bulk_read+0x418/0x494
- adc5_gen3_poll_wait_hs+0xe8/0x1e0 [qcom_spmi_adc5_gen3]
- ...
- __arm64_sys_read+0x4c/0x60
- invoke_syscall+0x80/0x218
- el0_svc_common+0xec/0x1c8
- ...
-
-addr ffffffc0265b7540 is located in stack of task thermal@2.0-ser/1314 at offset 32 in frame:
- adc5_gen3_poll_wait_hs+0x0/0x1e0 [qcom_spmi_adc5_gen3]
-
-this frame has 1 object:
- [32, 33) 'status'
-
-Memory state around the buggy address:
- ffffffc0265b7400: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
- ffffffc0265b7480: 04 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
->ffffffc0265b7500: 00 00 00 00 f1 f1 f1 f1 01 f3 f3 f3 00 00 00 00
- ^
- ffffffc0265b7580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ffffffc0265b7600: f1 f1 f1 f1 01 f2 07 f2 f2 f2 01 f3 00 00 00 00
-==================================================================
-
-Fixes: a9fce374815d ("spmi: add command tracepoints for SPMI")
-Cc: stable@vger.kernel.org
-Reviewed-by: Stephen Boyd <sboyd@kernel.org>
-Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: David Collins <quic_collinsd@quicinc.com>
-Link: https://lore.kernel.org/r/20220627235512.2272783-1-quic_collinsd@quicinc.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- include/trace/events/spmi.h | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/include/trace/events/spmi.h b/include/trace/events/spmi.h
-index 8b60efe18ba6..a6819fd85cdf 100644
---- a/include/trace/events/spmi.h
-+++ b/include/trace/events/spmi.h
-@@ -21,15 +21,15 @@ TRACE_EVENT(spmi_write_begin,
- __field ( u8, sid )
- __field ( u16, addr )
- __field ( u8, len )
-- __dynamic_array ( u8, buf, len + 1 )
-+ __dynamic_array ( u8, buf, len )
- ),
-
- TP_fast_assign(
- __entry->opcode = opcode;
- __entry->sid = sid;
- __entry->addr = addr;
-- __entry->len = len + 1;
-- memcpy(__get_dynamic_array(buf), buf, len + 1);
-+ __entry->len = len;
-+ memcpy(__get_dynamic_array(buf), buf, len);
- ),
-
- TP_printk("opc=%d sid=%02d addr=0x%04x len=%d buf=0x[%*phD]",
-@@ -92,7 +92,7 @@ TRACE_EVENT(spmi_read_end,
- __field ( u16, addr )
- __field ( int, ret )
- __field ( u8, len )
-- __dynamic_array ( u8, buf, len + 1 )
-+ __dynamic_array ( u8, buf, len )
- ),
-
- TP_fast_assign(
-@@ -100,8 +100,8 @@ TRACE_EVENT(spmi_read_end,
- __entry->sid = sid;
- __entry->addr = addr;
- __entry->ret = ret;
-- __entry->len = len + 1;
-- memcpy(__get_dynamic_array(buf), buf, len + 1);
-+ __entry->len = len;
-+ memcpy(__get_dynamic_array(buf), buf, len);
- ),
-
- TP_printk("opc=%d sid=%02d addr=0x%04x ret=%d len=%02d buf=0x[%*phD]",
---
-2.35.1
-
+++ /dev/null
-From f0226069b64d2032c220973bcfcacef9358446ea Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 2 Aug 2022 15:04:16 +0900
-Subject: x86/kprobes: Update kcb status flag after singlestepping
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
-
-[ Upstream commit dec8784c9088b131a1523f582c2194cfc8107dc0 ]
-
-Fix kprobes to update kcb (kprobes control block) status flag to
-KPROBE_HIT_SSDONE even if the kp->post_handler is not set.
-
-This bug may cause a kernel panic if another INT3 user runs right
-after kprobes because kprobe_int3_handler() misunderstands the
-INT3 is kprobe's single stepping INT3.
-
-Fixes: 6256e668b7af ("x86/kprobes: Use int3 instead of debug trap for single-step")
-Reported-by: Daniel Müller <deso@posteo.net>
-Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
-Signed-off-by: Ingo Molnar <mingo@kernel.org>
-Tested-by: Daniel Müller <deso@posteo.net>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/all/20220727210136.jjgc3lpqeq42yr3m@muellerd-fedora-PC2BDTX9
-Link: https://lore.kernel.org/r/165942025658.342061.12452378391879093249.stgit@devnote2
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/kernel/kprobes/core.c | 18 +++++++++++-------
- 1 file changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
-index f6727c67ae02..7a7f671c60b4 100644
---- a/arch/x86/kernel/kprobes/core.c
-+++ b/arch/x86/kernel/kprobes/core.c
-@@ -816,16 +816,20 @@ NOKPROBE_SYMBOL(arch_prepare_kretprobe);
- static void kprobe_post_process(struct kprobe *cur, struct pt_regs *regs,
- struct kprobe_ctlblk *kcb)
- {
-- if ((kcb->kprobe_status != KPROBE_REENTER) && cur->post_handler) {
-- kcb->kprobe_status = KPROBE_HIT_SSDONE;
-- cur->post_handler(cur, regs, 0);
-- }
--
- /* Restore back the original saved kprobes variables and continue. */
-- if (kcb->kprobe_status == KPROBE_REENTER)
-+ if (kcb->kprobe_status == KPROBE_REENTER) {
-+ /* This will restore both kcb and current_kprobe */
- restore_previous_kprobe(kcb);
-- else
-+ } else {
-+ /*
-+ * Always update the kcb status because
-+ * reset_curent_kprobe() doesn't update kcb.
-+ */
-+ kcb->kprobe_status = KPROBE_HIT_SSDONE;
-+ if (cur->post_handler)
-+ cur->post_handler(cur, regs, 0);
- reset_current_kprobe();
-+ }
- }
- NOKPROBE_SYMBOL(kprobe_post_process);
-
---
-2.35.1
-
+++ /dev/null
-From 91089205ead74e301d3394fcc2dc38ba07f63541 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 15 Jul 2022 17:15:36 +0200
-Subject: x86/olpc: fix 'logical not is only applied to the left hand side'
-
-From: Alexander Lobakin <alexandr.lobakin@intel.com>
-
-[ Upstream commit 3a2ba42cbd0b669ce3837ba400905f93dd06c79f ]
-
-The bitops compile-time optimization series revealed one more
-problem in olpc-xo1-sci.c:send_ebook_state(), resulted in GCC
-warnings:
-
-arch/x86/platform/olpc/olpc-xo1-sci.c: In function 'send_ebook_state':
-arch/x86/platform/olpc/olpc-xo1-sci.c:83:63: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
- 83 | if (!!test_bit(SW_TABLET_MODE, ebook_switch_idev->sw) == state)
- | ^~
-arch/x86/platform/olpc/olpc-xo1-sci.c:83:13: note: add parentheses around left hand side expression to silence this warning
-
-Despite this code working as intended, this redundant double
-negation of boolean value, together with comparing to `char`
-with no explicit conversion to bool, makes compilers think
-the author made some unintentional logical mistakes here.
-Make it the other way around and negate the char instead
-to silence the warnings.
-
-Fixes: d2aa37411b8e ("x86/olpc/xo1/sci: Produce wakeup events for buttons and switches")
-Cc: stable@vger.kernel.org # 3.5+
-Reported-by: Guenter Roeck <linux@roeck-us.net>
-Reported-by: kernel test robot <lkp@intel.com>
-Reviewed-and-tested-by: Guenter Roeck <linux@roeck-us.net>
-Signed-off-by: Alexander Lobakin <alexandr.lobakin@intel.com>
-Signed-off-by: Yury Norov <yury.norov@gmail.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/platform/olpc/olpc-xo1-sci.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/x86/platform/olpc/olpc-xo1-sci.c b/arch/x86/platform/olpc/olpc-xo1-sci.c
-index f03a6883dcc6..89f25af4b3c3 100644
---- a/arch/x86/platform/olpc/olpc-xo1-sci.c
-+++ b/arch/x86/platform/olpc/olpc-xo1-sci.c
-@@ -80,7 +80,7 @@ static void send_ebook_state(void)
- return;
- }
-
-- if (!!test_bit(SW_TABLET_MODE, ebook_switch_idev->sw) == state)
-+ if (test_bit(SW_TABLET_MODE, ebook_switch_idev->sw) == !!state)
- return; /* Nothing new to report. */
-
- input_report_switch(ebook_switch_idev, SW_TABLET_MODE, state);
---
-2.35.1
-