From: Sasha Levin Date: Fri, 5 Feb 2021 12:39:48 +0000 (-0500) Subject: Fixes for 4.9 X-Git-Tag: v4.4.256~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f384b9213b3f1baee1d1f7775d1bd74964caba6e;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.9 Signed-off-by: Sasha Levin --- diff --git a/queue-4.9/mac80211-fix-fast-rx-encryption-check.patch b/queue-4.9/mac80211-fix-fast-rx-encryption-check.patch new file mode 100644 index 00000000000..f33da1c5226 --- /dev/null +++ b/queue-4.9/mac80211-fix-fast-rx-encryption-check.patch @@ -0,0 +1,36 @@ +From 3c6ed961c2bde67a34fb4803549eadbc059b0a02 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 18 Dec 2020 19:47:17 +0100 +Subject: mac80211: fix fast-rx encryption check + +From: Felix Fietkau + +[ Upstream commit 622d3b4e39381262da7b18ca1ed1311df227de86 ] + +When using WEP, the default unicast key needs to be selected, instead of +the STA PTK. + +Signed-off-by: Felix Fietkau +Link: https://lore.kernel.org/r/20201218184718.93650-5-nbd@nbd.name +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + net/mac80211/rx.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c +index 9be82ed02e0e5..c38d68131d02e 100644 +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3802,6 +3802,8 @@ void ieee80211_check_fast_rx(struct sta_info *sta) + + rcu_read_lock(); + key = rcu_dereference(sta->ptk[sta->ptk_idx]); ++ if (!key) ++ key = rcu_dereference(sdata->default_unicast_key); + if (key) { + switch (key->conf.cipher) { + case WLAN_CIPHER_SUITE_TKIP: +-- +2.27.0 + diff --git a/queue-4.9/objtool-don-t-fail-on-missing-symbol-table.patch b/queue-4.9/objtool-don-t-fail-on-missing-symbol-table.patch new file mode 100644 index 00000000000..13549f730a5 --- /dev/null +++ b/queue-4.9/objtool-don-t-fail-on-missing-symbol-table.patch @@ -0,0 +1,51 @@ +From 60b22c32c611b0143a47ffaecaa36af138f5cdc4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 14 Jan 2021 16:14:01 -0600 +Subject: objtool: Don't fail on missing symbol table + +From: Josh Poimboeuf + +[ Upstream commit 1d489151e9f9d1647110277ff77282fe4d96d09b ] + +Thanks to a recent binutils change which doesn't generate unused +symbols, it's now possible for thunk_64.o be completely empty without +CONFIG_PREEMPTION: no text, no data, no symbols. + +We could edit the Makefile to only build that file when +CONFIG_PREEMPTION is enabled, but that will likely create confusion +if/when the thunks end up getting used by some other code again. + +Just ignore it and move on. + +Reported-by: Nathan Chancellor +Reviewed-by: Nathan Chancellor +Reviewed-by: Miroslav Benes +Tested-by: Nathan Chancellor +Link: https://github.com/ClangBuiltLinux/linux/issues/1254 +Signed-off-by: Josh Poimboeuf +Signed-off-by: Sasha Levin +--- + tools/objtool/elf.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c +index d84c28eac262d..0ba5bb51bd93c 100644 +--- a/tools/objtool/elf.c ++++ b/tools/objtool/elf.c +@@ -226,8 +226,11 @@ static int read_symbols(struct elf *elf) + + symtab = find_section_by_name(elf, ".symtab"); + if (!symtab) { +- WARN("missing symbol table"); +- return -1; ++ /* ++ * A missing symbol table is actually possible if it's an empty ++ * .o file. This can happen for thunk_64.o. ++ */ ++ return 0; + } + + symbols_nr = symtab->sh.sh_size / symtab->sh.sh_entsize; +-- +2.27.0 + diff --git a/queue-4.9/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch b/queue-4.9/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch new file mode 100644 index 00000000000..b161faf5e6f --- /dev/null +++ b/queue-4.9/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch @@ -0,0 +1,85 @@ +From d3e26d2cc1c6ea713a18455673f1cb17dcda20f8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 12 Jan 2021 09:06:38 -0600 +Subject: scsi: ibmvfc: Set default timeout to avoid crash during migration + +From: Brian King + +[ Upstream commit 764907293edc1af7ac857389af9dc858944f53dc ] + +While testing live partition mobility, we have observed occasional crashes +of the Linux partition. What we've seen is that during the live migration, +for specific configurations with large amounts of memory, slow network +links, and workloads that are changing memory a lot, the partition can end +up being suspended for 30 seconds or longer. This resulted in the following +scenario: + +CPU 0 CPU 1 +------------------------------- ---------------------------------- +scsi_queue_rq migration_store + -> blk_mq_start_request -> rtas_ibm_suspend_me + -> blk_add_timer -> on_each_cpu(rtas_percpu_suspend_me + _______________________________________V + | + V + -> IPI from CPU 1 + -> rtas_percpu_suspend_me + -> __rtas_suspend_last_cpu + +-- Linux partition suspended for > 30 seconds -- + -> for_each_online_cpu(cpu) + plpar_hcall_norets(H_PROD + -> scsi_dispatch_cmd + -> scsi_times_out + -> scsi_abort_command + -> queue_delayed_work + -> ibmvfc_queuecommand_lck + -> ibmvfc_send_event + -> ibmvfc_send_crq + - returns H_CLOSED + <- returns SCSI_MLQUEUE_HOST_BUSY +-> __blk_mq_requeue_request + + -> scmd_eh_abort_handler + -> scsi_try_to_abort_cmd + - returns SUCCESS + -> scsi_queue_insert + +Normally, the SCMD_STATE_COMPLETE bit would protect against the command +completion and the timeout, but that doesn't work here, since we don't +check that at all in the SCSI_MLQUEUE_HOST_BUSY path. + +In this case we end up calling scsi_queue_insert on a request that has +already been queued, or possibly even freed, and we crash. + +The patch below simply increases the default I/O timeout to avoid this race +condition. This is also the timeout value that nearly all IBM SAN storage +recommends setting as the default value. + +Link: https://lore.kernel.org/r/1610463998-19791-1-git-send-email-brking@linux.vnet.ibm.com +Signed-off-by: Brian King +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/ibmvscsi/ibmvfc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c +index 04b3ac17531db..7865feb8e5e83 100644 +--- a/drivers/scsi/ibmvscsi/ibmvfc.c ++++ b/drivers/scsi/ibmvscsi/ibmvfc.c +@@ -2891,8 +2891,10 @@ static int ibmvfc_slave_configure(struct scsi_device *sdev) + unsigned long flags = 0; + + spin_lock_irqsave(shost->host_lock, flags); +- if (sdev->type == TYPE_DISK) ++ if (sdev->type == TYPE_DISK) { + sdev->allow_restart = 1; ++ blk_queue_rq_timeout(sdev->request_queue, 120 * HZ); ++ } + spin_unlock_irqrestore(shost->host_lock, flags); + return 0; + } +-- +2.27.0 + diff --git a/queue-4.9/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch b/queue-4.9/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch new file mode 100644 index 00000000000..8ae456f360e --- /dev/null +++ b/queue-4.9/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch @@ -0,0 +1,95 @@ +From d0d00c30b359602d9625b649fdf3c63ca593d2ad Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 15 Dec 2020 11:47:31 -0800 +Subject: scsi: libfc: Avoid invoking response handler twice if ep is already + completed +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Javed Hasan + +[ Upstream commit b2b0f16fa65e910a3ec8771206bb49ee87a54ac5 ] + +A race condition exists between the response handler getting called because +of exchange_mgr_reset() (which clears out all the active XIDs) and the +response we get via an interrupt. + +Sequence of events: + + rport ba0200: Port timeout, state PLOGI + rport ba0200: Port entered PLOGI state from PLOGI state + xid 1052: Exchange timer armed : 20000 msecs  xid timer armed here + rport ba0200: Received LOGO request while in state PLOGI + rport ba0200: Delete port + rport ba0200: work event 3 + rport ba0200: lld callback ev 3 + bnx2fc: rport_event_hdlr: event = 3, port_id = 0xba0200 + bnx2fc: ba0200 - rport not created Yet!! + /* Here we reset any outstanding exchanges before + freeing rport using the exch_mgr_reset() */ + xid 1052: Exchange timer canceled + /* Here we got two responses for one xid */ + xid 1052: invoking resp(), esb 20000000 state 3 + xid 1052: invoking resp(), esb 20000000 state 3 + xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 + xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 + +Skip the response if the exchange is already completed. + +Link: https://lore.kernel.org/r/20201215194731.2326-1-jhasan@marvell.com +Signed-off-by: Javed Hasan +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/libfc/fc_exch.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c +index d0a86ef806522..59fd6101f188b 100644 +--- a/drivers/scsi/libfc/fc_exch.c ++++ b/drivers/scsi/libfc/fc_exch.c +@@ -1585,8 +1585,13 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) + rc = fc_exch_done_locked(ep); + WARN_ON(fc_seq_exch(sp) != ep); + spin_unlock_bh(&ep->ex_lock); +- if (!rc) ++ if (!rc) { + fc_exch_delete(ep); ++ } else { ++ FC_EXCH_DBG(ep, "ep is completed already," ++ "hence skip calling the resp\n"); ++ goto skip_resp; ++ } + } + + /* +@@ -1605,6 +1610,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) + if (!fc_invoke_resp(ep, sp, fp)) + fc_frame_free(fp); + ++skip_resp: + fc_exch_release(ep); + return; + rel: +@@ -1848,10 +1854,16 @@ static void fc_exch_reset(struct fc_exch *ep) + + fc_exch_hold(ep); + +- if (!rc) ++ if (!rc) { + fc_exch_delete(ep); ++ } else { ++ FC_EXCH_DBG(ep, "ep is completed already," ++ "hence skip calling the resp\n"); ++ goto skip_resp; ++ } + + fc_invoke_resp(ep, sp, ERR_PTR(-FC_EX_CLOSED)); ++skip_resp: + fc_seq_set_resp(sp, NULL, ep->arg); + fc_exch_release(ep); + } +-- +2.27.0 + diff --git a/queue-4.9/series b/queue-4.9/series index 4eea0483ac9..355efeafa1d 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -11,3 +11,7 @@ rtmutex-remove-unused-argument-from-rt_mutex_proxy_unlock.patch futex-use-pi_state_update_owner-in-put_pi_state.patch futex-simplify-fixup_pi_state_owner.patch futex-handle-faults-correctly-for-pi-futexes.patch +scsi-libfc-avoid-invoking-response-handler-twice-if-.patch +mac80211-fix-fast-rx-encryption-check.patch +scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch +objtool-don-t-fail-on-missing-symbol-table.patch