]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.14
authorSasha Levin <sashal@kernel.org>
Fri, 5 Feb 2021 12:39:48 +0000 (07:39 -0500)
committerSasha Levin <sashal@kernel.org>
Fri, 5 Feb 2021 12:39:48 +0000 (07:39 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.14/kthread-extract-kthread_is_per_cpu.patch [new file with mode: 0644]
queue-4.14/mac80211-fix-fast-rx-encryption-check.patch [new file with mode: 0644]
queue-4.14/objtool-don-t-fail-on-missing-symbol-table.patch [new file with mode: 0644]
queue-4.14/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch [new file with mode: 0644]
queue-4.14/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch [new file with mode: 0644]
queue-4.14/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch [new file with mode: 0644]
queue-4.14/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch [new file with mode: 0644]
queue-4.14/series
queue-4.14/x86-__always_inline-__-rd-wr-msr.patch [new file with mode: 0644]

diff --git a/queue-4.14/kthread-extract-kthread_is_per_cpu.patch b/queue-4.14/kthread-extract-kthread_is_per_cpu.patch
new file mode 100644 (file)
index 0000000..681cb1f
--- /dev/null
@@ -0,0 +1,111 @@
+From 604626b6f21cffbf0af7740755b25476d4a5e638 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 12 Jan 2021 11:24:04 +0100
+Subject: kthread: Extract KTHREAD_IS_PER_CPU
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+[ Upstream commit ac687e6e8c26181a33270efd1a2e2241377924b0 ]
+
+There is a need to distinguish geniune per-cpu kthreads from kthreads
+that happen to have a single CPU affinity.
+
+Geniune per-cpu kthreads are kthreads that are CPU affine for
+correctness, these will obviously have PF_KTHREAD set, but must also
+have PF_NO_SETAFFINITY set, lest userspace modify their affinity and
+ruins things.
+
+However, these two things are not sufficient, PF_NO_SETAFFINITY is
+also set on other tasks that have their affinities controlled through
+other means, like for instance workqueues.
+
+Therefore another bit is needed; it turns out kthread_create_per_cpu()
+already has such a bit: KTHREAD_IS_PER_CPU, which is used to make
+kthread_park()/kthread_unpark() work correctly.
+
+Expose this flag and remove the implicit setting of it from
+kthread_create_on_cpu(); the io_uring usage of it seems dubious at
+best.
+
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
+Tested-by: Valentin Schneider <valentin.schneider@arm.com>
+Link: https://lkml.kernel.org/r/20210121103506.557620262@infradead.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/linux/kthread.h |  3 +++
+ kernel/kthread.c        | 27 ++++++++++++++++++++++++++-
+ kernel/smpboot.c        |  1 +
+ 3 files changed, 30 insertions(+), 1 deletion(-)
+
+diff --git a/include/linux/kthread.h b/include/linux/kthread.h
+index 4e26609c77d41..eb305353f20fa 100644
+--- a/include/linux/kthread.h
++++ b/include/linux/kthread.h
+@@ -31,6 +31,9 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
+                                         unsigned int cpu,
+                                         const char *namefmt);
++void kthread_set_per_cpu(struct task_struct *k, int cpu);
++bool kthread_is_per_cpu(struct task_struct *k);
++
+ /**
+  * kthread_run - create and wake a thread.
+  * @threadfn: the function to run until signal_pending(current).
+diff --git a/kernel/kthread.c b/kernel/kthread.c
+index bd58765d75e76..fd6f9322312aa 100644
+--- a/kernel/kthread.c
++++ b/kernel/kthread.c
+@@ -433,11 +433,36 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
+               return p;
+       kthread_bind(p, cpu);
+       /* CPU hotplug need to bind once again when unparking the thread. */
+-      set_bit(KTHREAD_IS_PER_CPU, &to_kthread(p)->flags);
+       to_kthread(p)->cpu = cpu;
+       return p;
+ }
++void kthread_set_per_cpu(struct task_struct *k, int cpu)
++{
++      struct kthread *kthread = to_kthread(k);
++      if (!kthread)
++              return;
++
++      WARN_ON_ONCE(!(k->flags & PF_NO_SETAFFINITY));
++
++      if (cpu < 0) {
++              clear_bit(KTHREAD_IS_PER_CPU, &kthread->flags);
++              return;
++      }
++
++      kthread->cpu = cpu;
++      set_bit(KTHREAD_IS_PER_CPU, &kthread->flags);
++}
++
++bool kthread_is_per_cpu(struct task_struct *k)
++{
++      struct kthread *kthread = to_kthread(k);
++      if (!kthread)
++              return false;
++
++      return test_bit(KTHREAD_IS_PER_CPU, &kthread->flags);
++}
++
+ /**
+  * kthread_unpark - unpark a thread created by kthread_create().
+  * @k:                thread created by kthread_create().
+diff --git a/kernel/smpboot.c b/kernel/smpboot.c
+index 5043e7433f4b1..eeb7f8e9cce37 100644
+--- a/kernel/smpboot.c
++++ b/kernel/smpboot.c
+@@ -187,6 +187,7 @@ __smpboot_create_thread(struct smp_hotplug_thread *ht, unsigned int cpu)
+               kfree(td);
+               return PTR_ERR(tsk);
+       }
++      kthread_set_per_cpu(tsk, cpu);
+       /*
+        * Park the thread so that it could start right on the CPU
+        * when it is available.
+-- 
+2.27.0
+
diff --git a/queue-4.14/mac80211-fix-fast-rx-encryption-check.patch b/queue-4.14/mac80211-fix-fast-rx-encryption-check.patch
new file mode 100644 (file)
index 0000000..871d73e
--- /dev/null
@@ -0,0 +1,36 @@
+From a269606794503053dd07b7a757464ef74a09b447 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 18 Dec 2020 19:47:17 +0100
+Subject: mac80211: fix fast-rx encryption check
+
+From: Felix Fietkau <nbd@nbd.name>
+
+[ Upstream commit 622d3b4e39381262da7b18ca1ed1311df227de86 ]
+
+When using WEP, the default unicast key needs to be selected, instead of
+the STA PTK.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Link: https://lore.kernel.org/r/20201218184718.93650-5-nbd@nbd.name
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/mac80211/rx.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
+index 04ae9de55d74b..48c6aa337c925 100644
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -3823,6 +3823,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.14/objtool-don-t-fail-on-missing-symbol-table.patch b/queue-4.14/objtool-don-t-fail-on-missing-symbol-table.patch
new file mode 100644 (file)
index 0000000..5d779dd
--- /dev/null
@@ -0,0 +1,51 @@
+From 4a79084e901720395c02279aa2c5f650feb7913f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 16:14:01 -0600
+Subject: objtool: Don't fail on missing symbol table
+
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+
+[ 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 <natechancellor@gmail.com>
+Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
+Reviewed-by: Miroslav Benes <mbenes@suse.cz>
+Tested-by: Nathan Chancellor <natechancellor@gmail.com>
+Link: https://github.com/ClangBuiltLinux/linux/issues/1254
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 d089c711355a9..fa269622a974e 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.14/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch b/queue-4.14/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch
new file mode 100644 (file)
index 0000000..9dd3af5
--- /dev/null
@@ -0,0 +1,82 @@
+From b4e726795fa248285b39ae064a25082c518aa552 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 30 Dec 2020 12:21:05 +0200
+Subject: phy: cpcap-usb: Fix warning for missing regulator_disable
+
+From: Tony Lindgren <tony@atomide.com>
+
+[ Upstream commit 764257d9069a9c19758b626cc1ba4ae079335d9e ]
+
+On deferred probe, we will get the following splat:
+
+cpcap-usb-phy cpcap-usb-phy.0: could not initialize VBUS or ID IIO: -517
+WARNING: CPU: 0 PID: 21 at drivers/regulator/core.c:2123 regulator_put+0x68/0x78
+...
+(regulator_put) from [<c068ebf0>] (release_nodes+0x1b4/0x1fc)
+(release_nodes) from [<c068a9a4>] (really_probe+0x104/0x4a0)
+(really_probe) from [<c068b034>] (driver_probe_device+0x58/0xb4)
+
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Link: https://lore.kernel.org/r/20201230102105.11826-1-tony@atomide.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/phy/motorola/phy-cpcap-usb.c | 19 +++++++++++++------
+ 1 file changed, 13 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/phy-cpcap-usb.c
+index 593c77dbde2eb..106f53f333242 100644
+--- a/drivers/phy/motorola/phy-cpcap-usb.c
++++ b/drivers/phy/motorola/phy-cpcap-usb.c
+@@ -623,35 +623,42 @@ static int cpcap_usb_phy_probe(struct platform_device *pdev)
+       generic_phy = devm_phy_create(ddata->dev, NULL, &ops);
+       if (IS_ERR(generic_phy)) {
+               error = PTR_ERR(generic_phy);
+-              return PTR_ERR(generic_phy);
++              goto out_reg_disable;
+       }
+       phy_set_drvdata(generic_phy, ddata);
+       phy_provider = devm_of_phy_provider_register(ddata->dev,
+                                                    of_phy_simple_xlate);
+-      if (IS_ERR(phy_provider))
+-              return PTR_ERR(phy_provider);
++      if (IS_ERR(phy_provider)) {
++              error = PTR_ERR(phy_provider);
++              goto out_reg_disable;
++      }
+       error = cpcap_usb_init_optional_pins(ddata);
+       if (error)
+-              return error;
++              goto out_reg_disable;
+       cpcap_usb_init_optional_gpios(ddata);
+       error = cpcap_usb_init_iio(ddata);
+       if (error)
+-              return error;
++              goto out_reg_disable;
+       error = cpcap_usb_init_interrupts(pdev, ddata);
+       if (error)
+-              return error;
++              goto out_reg_disable;
+       usb_add_phy_dev(&ddata->phy);
+       atomic_set(&ddata->active, 1);
+       schedule_delayed_work(&ddata->detect_work, msecs_to_jiffies(1));
+       return 0;
++
++out_reg_disable:
++      regulator_disable(ddata->vusb);
++
++      return error;
+ }
+ static int cpcap_usb_phy_remove(struct platform_device *pdev)
+-- 
+2.27.0
+
diff --git a/queue-4.14/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch b/queue-4.14/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch
new file mode 100644 (file)
index 0000000..b3d3c87
--- /dev/null
@@ -0,0 +1,85 @@
+From 80d141b1ea2db54bceccd2b733910c46c1afdb58 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 12 Jan 2021 09:06:38 -0600
+Subject: scsi: ibmvfc: Set default timeout to avoid crash during migration
+
+From: Brian King <brking@linux.vnet.ibm.com>
+
+[ 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 <brking@linux.vnet.ibm.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 dbacd9830d3df..460014ded14de 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.14/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch b/queue-4.14/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch
new file mode 100644 (file)
index 0000000..bb50ab9
--- /dev/null
@@ -0,0 +1,95 @@
+From 32627c951b75265c17b3816ea2a06af8404cf53c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <jhasan@marvell.com>
+
+[ 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 <jhasan@marvell.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 6ba257cbc6d94..384458d1f73c3 100644
+--- a/drivers/scsi/libfc/fc_exch.c
++++ b/drivers/scsi/libfc/fc_exch.c
+@@ -1631,8 +1631,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;
++              }
+       }
+       /*
+@@ -1651,6 +1656,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:
+@@ -1907,10 +1913,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.14/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch b/queue-4.14/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch
new file mode 100644 (file)
index 0000000..a60da22
--- /dev/null
@@ -0,0 +1,45 @@
+From f089afe44761ff5a1aaf26bf731e64e79bc9888b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 11 Jan 2021 15:25:41 +0100
+Subject: scsi: scsi_transport_srp: Don't block target in failfast state
+
+From: Martin Wilck <mwilck@suse.com>
+
+[ Upstream commit 72eeb7c7151302ef007f1acd018cbf6f30e50321 ]
+
+If the port is in SRP_RPORT_FAIL_FAST state when srp_reconnect_rport() is
+entered, a transition to SDEV_BLOCK would be illegal, and a kernel WARNING
+would be triggered. Skip scsi_target_block() in this case.
+
+Link: https://lore.kernel.org/r/20210111142541.21534-1-mwilck@suse.com
+Reviewed-by: Bart Van Assche <bvanassche@acm.org>
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/scsi/scsi_transport_srp.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
+index 456ce9f19569f..a0e35028ebdac 100644
+--- a/drivers/scsi/scsi_transport_srp.c
++++ b/drivers/scsi/scsi_transport_srp.c
+@@ -555,7 +555,14 @@ int srp_reconnect_rport(struct srp_rport *rport)
+       res = mutex_lock_interruptible(&rport->mutex);
+       if (res)
+               goto out;
+-      scsi_target_block(&shost->shost_gendev);
++      if (rport->state != SRP_RPORT_FAIL_FAST)
++              /*
++               * sdev state must be SDEV_TRANSPORT_OFFLINE, transition
++               * to SDEV_BLOCK is illegal. Calling scsi_target_unblock()
++               * later is ok though, scsi_internal_device_unblock_nowait()
++               * treats SDEV_TRANSPORT_OFFLINE like SDEV_BLOCK.
++               */
++              scsi_target_block(&shost->shost_gendev);
+       res = rport->state != SRP_RPORT_LOST ? i->f->reconnect(rport) : -ENODEV;
+       pr_debug("%s (state %d): transport.reconnect() returned %d\n",
+                dev_name(&shost->shost_gendev), rport->state, res);
+-- 
+2.27.0
+
index 6ea785b422bf87585d830497fd03675769b79fc2..2ceee7deeb756f87ba585396be4a5a25dc89b7bb 100644 (file)
@@ -5,3 +5,11 @@ net_sched-reject-silly-cell_log-in-qdisc_get_rtab.patch
 net_sched-gen_estimator-support-large-ewma-log.patch
 base-core-remove-warn_on-from-link-dependencies-check.patch
 driver-core-extend-device_is_dependent.patch
+phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch
+x86-__always_inline-__-rd-wr-msr.patch
+scsi-scsi_transport_srp-don-t-block-target-in-failfa.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
+kthread-extract-kthread_is_per_cpu.patch
diff --git a/queue-4.14/x86-__always_inline-__-rd-wr-msr.patch b/queue-4.14/x86-__always_inline-__-rd-wr-msr.patch
new file mode 100644 (file)
index 0000000..3418d14
--- /dev/null
@@ -0,0 +1,48 @@
+From 81453886af8f1623098ff45e60f77a7f7af930c9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 7 Jan 2021 11:14:25 +0100
+Subject: x86: __always_inline __{rd,wr}msr()
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+[ Upstream commit 66a425011c61e71560c234492d204e83cfb73d1d ]
+
+When the compiler choses to not inline the trivial MSR helpers:
+
+  vmlinux.o: warning: objtool: __sev_es_nmi_complete()+0xce: call to __wrmsr.constprop.14() leaves .noinstr.text section
+
+Reported-by: Randy Dunlap <rdunlap@infradead.org>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Acked-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
+Link: https://lore.kernel.org/r/X/bf3gV+BW7kGEsB@hirez.programming.kicks-ass.net
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/include/asm/msr.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
+index 30df295f6d94c..18f9a9b7280bd 100644
+--- a/arch/x86/include/asm/msr.h
++++ b/arch/x86/include/asm/msr.h
+@@ -88,7 +88,7 @@ static inline void do_trace_rdpmc(unsigned int msr, u64 val, int failed) {}
+  * think of extending them - you will be slapped with a stinking trout or a frozen
+  * shark will reach you, wherever you are! You've been warned.
+  */
+-static inline unsigned long long notrace __rdmsr(unsigned int msr)
++static __always_inline unsigned long long __rdmsr(unsigned int msr)
+ {
+       DECLARE_ARGS(val, low, high);
+@@ -100,7 +100,7 @@ static inline unsigned long long notrace __rdmsr(unsigned int msr)
+       return EAX_EDX_VAL(val, low, high);
+ }
+-static inline void notrace __wrmsr(unsigned int msr, u32 low, u32 high)
++static __always_inline void __wrmsr(unsigned int msr, u32 low, u32 high)
+ {
+       asm volatile("1: wrmsr\n"
+                    "2:\n"
+-- 
+2.27.0
+