summaryrefslogtreecommitdiff
path: root/SOURCES/patch-5.14-redhat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/patch-5.14-redhat.patch')
-rw-r--r--SOURCES/patch-5.14-redhat.patch140
1 files changed, 34 insertions, 106 deletions
diff --git a/SOURCES/patch-5.14-redhat.patch b/SOURCES/patch-5.14-redhat.patch
index e2d266b..e7e1bce 100644
--- a/SOURCES/patch-5.14-redhat.patch
+++ b/SOURCES/patch-5.14-redhat.patch
@@ -23,9 +23,8 @@
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 4 +
drivers/net/wireguard/main.c | 6 +
drivers/pci/quirks.c | 24 +
- drivers/usb/core/hcd.c | 29 +-
drivers/usb/core/hub.c | 7 +
- drivers/usb/host/xhci.c | 1 -
+ fs/btrfs/async-thread.c | 14 +
fs/xfs/xfs_super.c | 8 -
include/linux/efi.h | 22 +-
include/linux/lsm_hook_defs.h | 2 +
@@ -33,7 +32,6 @@
include/linux/random.h | 7 +
include/linux/rmi.h | 1 +
include/linux/security.h | 5 +
- include/linux/usb/hcd.h | 2 -
init/Kconfig | 2 +-
kernel/module_signing.c | 9 +-
mm/cma.c | 10 +
@@ -55,7 +53,7 @@
tools/testing/selftests/bpf/progs/linked_maps2.c | 76 ---
tools/testing/selftests/bpf/progs/linked_vars1.c | 54 --
tools/testing/selftests/bpf/progs/linked_vars2.c | 55 ---
- 57 files changed, 677 insertions(+), 1520 deletions(-)
+ 55 files changed, 685 insertions(+), 1494 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 110b305af27f..488feec76f0a 100644
@@ -1333,76 +1331,6 @@ index 8c3c1ef92171..18431236ab9f 100644
/*
* Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero)
* class code. Fix it.
-diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 99ff2d23be05..0f8b7c93310e 100644
---- a/drivers/usb/core/hcd.c
-+++ b/drivers/usb/core/hcd.c
-@@ -2775,7 +2775,6 @@ int usb_add_hcd(struct usb_hcd *hcd,
- {
- int retval;
- struct usb_device *rhdev;
-- struct usb_hcd *shared_hcd;
-
- if (!hcd->skip_phy_initialization && usb_hcd_is_primary_hcd(hcd)) {
- hcd->phy_roothub = usb_phy_roothub_alloc(hcd->self.sysdev);
-@@ -2936,26 +2935,13 @@ int usb_add_hcd(struct usb_hcd *hcd,
- goto err_hcd_driver_start;
- }
-
-- /* starting here, usbcore will pay attention to the shared HCD roothub */
-- shared_hcd = hcd->shared_hcd;
-- if (!usb_hcd_is_primary_hcd(hcd) && shared_hcd && HCD_DEFER_RH_REGISTER(shared_hcd)) {
-- retval = register_root_hub(shared_hcd);
-- if (retval != 0)
-- goto err_register_root_hub;
--
-- if (shared_hcd->uses_new_polling && HCD_POLL_RH(shared_hcd))
-- usb_hcd_poll_rh_status(shared_hcd);
-- }
--
- /* starting here, usbcore will pay attention to this root hub */
-- if (!HCD_DEFER_RH_REGISTER(hcd)) {
-- retval = register_root_hub(hcd);
-- if (retval != 0)
-- goto err_register_root_hub;
-+ retval = register_root_hub(hcd);
-+ if (retval != 0)
-+ goto err_register_root_hub;
-
-- if (hcd->uses_new_polling && HCD_POLL_RH(hcd))
-- usb_hcd_poll_rh_status(hcd);
-- }
-+ if (hcd->uses_new_polling && HCD_POLL_RH(hcd))
-+ usb_hcd_poll_rh_status(hcd);
-
- return retval;
-
-@@ -2999,7 +2985,6 @@ EXPORT_SYMBOL_GPL(usb_add_hcd);
- void usb_remove_hcd(struct usb_hcd *hcd)
- {
- struct usb_device *rhdev = hcd->self.root_hub;
-- bool rh_registered;
-
- dev_info(hcd->self.controller, "remove, state %x\n", hcd->state);
-
-@@ -3010,7 +2995,6 @@ void usb_remove_hcd(struct usb_hcd *hcd)
-
- dev_dbg(hcd->self.controller, "roothub graceful disconnect\n");
- spin_lock_irq (&hcd_root_hub_lock);
-- rh_registered = hcd->rh_registered;
- hcd->rh_registered = 0;
- spin_unlock_irq (&hcd_root_hub_lock);
-
-@@ -3020,8 +3004,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
- cancel_work_sync(&hcd->died_work);
-
- mutex_lock(&usb_bus_idr_lock);
-- if (rh_registered)
-- usb_disconnect(&rhdev); /* Sets rhdev to NULL */
-+ usb_disconnect(&rhdev); /* Sets rhdev to NULL */
- mutex_unlock(&usb_bus_idr_lock);
-
- /*
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 86658a81d284..5647f4756e97 100644
--- a/drivers/usb/core/hub.c
@@ -1421,18 +1349,38 @@ index 86658a81d284..5647f4756e97 100644
/* Lock the device, then check to see if we were
* disconnected while waiting for the lock to succeed. */
usb_lock_device(hdev);
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index cb730683f898..4e32b96ccc88 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -692,7 +692,6 @@ int xhci_run(struct usb_hcd *hcd)
- if (ret)
- xhci_free_command(xhci, command);
- }
-- set_bit(HCD_FLAG_DEFER_RH_REGISTER, &hcd->flags);
- xhci_dbg_trace(xhci, trace_xhci_dbg_init,
- "Finished xhci_run for USB2 roothub");
-
+diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
+index 309516e6a968..d39af03b456c 100644
+--- a/fs/btrfs/async-thread.c
++++ b/fs/btrfs/async-thread.c
+@@ -234,6 +234,13 @@ static void run_ordered_work(struct __btrfs_workqueue *wq,
+ ordered_list);
+ if (!test_bit(WORK_DONE_BIT, &work->flags))
+ break;
++ /*
++ * Orders all subsequent loads after reading WORK_DONE_BIT,
++ * paired with the smp_mb__before_atomic in btrfs_work_helper
++ * this guarantees that the ordered function will see all
++ * updates from ordinary work function.
++ */
++ smp_rmb();
+
+ /*
+ * we are going to call the ordered done function, but
+@@ -317,6 +324,13 @@ static void btrfs_work_helper(struct work_struct *normal_work)
+ thresh_exec_hook(wq);
+ work->func(work);
+ if (need_order) {
++ /*
++ * Ensures all memory accesses done in the work function are
++ * ordered before setting the WORK_DONE_BIT.Ensuring the thread
++ * which is going to executed the ordered work sees them.
++ * Pairs with the smp_rmb in run_ordered_work.
++ */
++ smp_mb__before_atomic();
+ set_bit(WORK_DONE_BIT, &work->flags);
+ run_ordered_work(wq, work);
+ } else {
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 2c9e26a44546..f96324912d6a 100644
--- a/fs/xfs/xfs_super.c
@@ -1617,26 +1565,6 @@ index 5b7288521300..f966f591c91e 100644
#endif /* CONFIG_SECURITY */
#if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE)
-diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
-index 2c1fc9212cf2..548a028f2dab 100644
---- a/include/linux/usb/hcd.h
-+++ b/include/linux/usb/hcd.h
-@@ -124,7 +124,6 @@ struct usb_hcd {
- #define HCD_FLAG_RH_RUNNING 5 /* root hub is running? */
- #define HCD_FLAG_DEAD 6 /* controller has died? */
- #define HCD_FLAG_INTF_AUTHORIZED 7 /* authorize interfaces? */
--#define HCD_FLAG_DEFER_RH_REGISTER 8 /* Defer roothub registration */
-
- /* The flags can be tested using these macros; they are likely to
- * be slightly faster than test_bit().
-@@ -135,7 +134,6 @@ struct usb_hcd {
- #define HCD_WAKEUP_PENDING(hcd) ((hcd)->flags & (1U << HCD_FLAG_WAKEUP_PENDING))
- #define HCD_RH_RUNNING(hcd) ((hcd)->flags & (1U << HCD_FLAG_RH_RUNNING))
- #define HCD_DEAD(hcd) ((hcd)->flags & (1U << HCD_FLAG_DEAD))
--#define HCD_DEFER_RH_REGISTER(hcd) ((hcd)->flags & (1U << HCD_FLAG_DEFER_RH_REGISTER))
-
- /*
- * Specifies if interfaces are authorized by default
diff --git a/init/Kconfig b/init/Kconfig
index 55f9f7738ebb..564553afb251 100644
--- a/init/Kconfig