rebase patches on top of Ubuntu-5.11.0-38.42
(generated with debian/scripts/import-upstream-tag) Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
4795bf0326
commit
2c642cdcaa
@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|||||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
|
diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
|
||||||
index 4ae735039daf..5a1abe7b4169 100755
|
index a72b154de7b0..4dd111086466 100755
|
||||||
--- a/scripts/mkcompile_h
|
--- a/scripts/mkcompile_h
|
||||||
+++ b/scripts/mkcompile_h
|
+++ b/scripts/mkcompile_h
|
||||||
@@ -24,10 +24,14 @@ else
|
@@ -24,10 +24,14 @@ else
|
||||||
|
@ -75,10 +75,10 @@ index ee85be64b680..a38a8e44422e 100644
|
|||||||
Safety option to keep boot IRQs enabled. This
|
Safety option to keep boot IRQs enabled. This
|
||||||
should never be necessary.
|
should never be necessary.
|
||||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||||
index f32e521ade1e..4f3558d0c00a 100644
|
index 6e9f3c366298..cc0e3a76168e 100644
|
||||||
--- a/drivers/pci/quirks.c
|
--- a/drivers/pci/quirks.c
|
||||||
+++ b/drivers/pci/quirks.c
|
+++ b/drivers/pci/quirks.c
|
||||||
@@ -192,6 +192,106 @@ static int __init pci_apply_final_quirks(void)
|
@@ -193,6 +193,106 @@ static int __init pci_apply_final_quirks(void)
|
||||||
}
|
}
|
||||||
fs_initcall_sync(pci_apply_final_quirks);
|
fs_initcall_sync(pci_apply_final_quirks);
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ index f32e521ade1e..4f3558d0c00a 100644
|
|||||||
/*
|
/*
|
||||||
* Decoding should be disabled for a PCI device during BAR sizing to avoid
|
* Decoding should be disabled for a PCI device during BAR sizing to avoid
|
||||||
* conflict. But doing so may cause problems on host bridge and perhaps other
|
* conflict. But doing so may cause problems on host bridge and perhaps other
|
||||||
@@ -4857,6 +4957,8 @@ static const struct pci_dev_acs_enabled {
|
@@ -4869,6 +4969,8 @@ static const struct pci_dev_acs_enabled {
|
||||||
{ PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
|
{ PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
|
||||||
/* APM X-Gene */
|
/* APM X-Gene */
|
||||||
{ PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
|
{ PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
|
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
|
||||||
index 14e6c73a6031..c191c9e50735 100644
|
index 16c777d45eb9..8c5341f9a271 100644
|
||||||
--- a/virt/kvm/kvm_main.c
|
--- a/virt/kvm/kvm_main.c
|
||||||
+++ b/virt/kvm/kvm_main.c
|
+++ b/virt/kvm/kvm_main.c
|
||||||
@@ -77,7 +77,7 @@ module_param(halt_poll_ns, uint, 0644);
|
@@ -77,7 +77,7 @@ module_param(halt_poll_ns, uint, 0644);
|
||||||
|
@ -10,10 +10,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/net/core/dev.c b/net/core/dev.c
|
diff --git a/net/core/dev.c b/net/core/dev.c
|
||||||
index b91b76890cbc..cb7ffc3e848b 100644
|
index 5cc9226f8e67..7dd94b012533 100644
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -10365,7 +10365,7 @@ static void netdev_wait_allrefs(struct net_device *dev)
|
@@ -10392,7 +10392,7 @@ static void netdev_wait_allrefs(struct net_device *dev)
|
||||||
refcnt = netdev_refcnt_read(dev);
|
refcnt = netdev_refcnt_read(dev);
|
||||||
|
|
||||||
if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) {
|
if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) {
|
||||||
|
@ -27,10 +27,10 @@ Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
|
|||||||
1 file changed, 7 insertions(+)
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
diff --git a/fs/io_uring.c b/fs/io_uring.c
|
diff --git a/fs/io_uring.c b/fs/io_uring.c
|
||||||
index a0d42aea3aa1..ce5cf51a5667 100644
|
index d24eb8e53c4c..b5192f2f8178 100644
|
||||||
--- a/fs/io_uring.c
|
--- a/fs/io_uring.c
|
||||||
+++ b/fs/io_uring.c
|
+++ b/fs/io_uring.c
|
||||||
@@ -2731,6 +2731,13 @@ static bool io_rw_reissue(struct io_kiocb *req, long res)
|
@@ -2743,6 +2743,13 @@ static bool io_rw_reissue(struct io_kiocb *req, long res)
|
||||||
if (percpu_ref_is_dying(&req->ctx->refs))
|
if (percpu_ref_is_dying(&req->ctx->refs))
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -1,68 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
||||||
Date: Fri, 2 Jul 2021 14:07:36 +0200
|
|
||||||
Subject: [PATCH] net: bridge: sync fdb to new unicast-filtering ports
|
|
||||||
|
|
||||||
Since commit 2796d0c648c9 ("bridge: Automatically manage
|
|
||||||
port promiscuous mode.")
|
|
||||||
bridges with `vlan_filtering 1` and only 1 auto-port don't
|
|
||||||
set IFF_PROMISC for unicast-filtering-capable ports.
|
|
||||||
|
|
||||||
Normally on port changes `br_manage_promisc` is called to
|
|
||||||
update the promisc flags and unicast filters if necessary,
|
|
||||||
but it cannot distinguish between *new* ports and ones
|
|
||||||
losing their promisc flag, and new ports end up not
|
|
||||||
receiving the MAC address list.
|
|
||||||
|
|
||||||
Fix this by calling `br_fdb_sync_static` in `br_add_if`
|
|
||||||
after the port promisc flags are updated and the unicast
|
|
||||||
filter was supposed to have been filled.
|
|
||||||
|
|
||||||
Fixes: 2796d0c648c9 ("bridge: Automatically manage port promiscuous mode.")
|
|
||||||
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
||||||
---
|
|
||||||
net/bridge/br_if.c | 17 ++++++++++++++++-
|
|
||||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
|
|
||||||
index f7d2f472ae24..6e4a32354a13 100644
|
|
||||||
--- a/net/bridge/br_if.c
|
|
||||||
+++ b/net/bridge/br_if.c
|
|
||||||
@@ -562,7 +562,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
|
|
||||||
struct net_bridge_port *p;
|
|
||||||
int err = 0;
|
|
||||||
unsigned br_hr, dev_hr;
|
|
||||||
- bool changed_addr;
|
|
||||||
+ bool changed_addr, fdb_synced = false;
|
|
||||||
|
|
||||||
/* Don't allow bridging non-ethernet like devices. */
|
|
||||||
if ((dev->flags & IFF_LOOPBACK) ||
|
|
||||||
@@ -652,6 +652,19 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
|
|
||||||
list_add_rcu(&p->list, &br->port_list);
|
|
||||||
|
|
||||||
nbp_update_port_count(br);
|
|
||||||
+ if (!br_promisc_port(p) && (p->dev->priv_flags & IFF_UNICAST_FLT)) {
|
|
||||||
+ /* When updating the port count we also update all ports'
|
|
||||||
+ * promiscuous mode.
|
|
||||||
+ * A port leaving promiscuous mode normally gets the bridge's
|
|
||||||
+ * fdb synced to the unicast filter (if supported), however,
|
|
||||||
+ * `br_port_clear_promisc` does not distinguish between
|
|
||||||
+ * non-promiscuous ports and *new* ports, so we need to
|
|
||||||
+ * sync explicitly here.
|
|
||||||
+ */
|
|
||||||
+ fdb_synced = br_fdb_sync_static(br, p) == 0;
|
|
||||||
+ if (!fdb_synced)
|
|
||||||
+ netdev_err(dev, "failed to sync bridge static fdb addresses to this port\n");
|
|
||||||
+ }
|
|
||||||
|
|
||||||
netdev_update_features(br->dev);
|
|
||||||
|
|
||||||
@@ -701,6 +714,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
err7:
|
|
||||||
+ if (fdb_synced)
|
|
||||||
+ br_fdb_unsync_static(br, p);
|
|
||||||
list_del_rcu(&p->list);
|
|
||||||
br_fdb_delete_by_port(br, p, 0, 1);
|
|
||||||
nbp_update_port_count(br);
|
|
@ -43,7 +43,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|||||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/block/blk-core.c b/block/blk-core.c
|
diff --git a/block/blk-core.c b/block/blk-core.c
|
||||||
index 7663a9b94b80..debdf9b0bf30 100644
|
index ce3b75f8b56d..9658caafddc2 100644
|
||||||
--- a/block/blk-core.c
|
--- a/block/blk-core.c
|
||||||
+++ b/block/blk-core.c
|
+++ b/block/blk-core.c
|
||||||
@@ -121,7 +121,6 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
|
@@ -121,7 +121,6 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
|
@ -60,7 +60,7 @@ index 8b11ab3b3762..705ee6c99020 100644
|
|||||||
* blk_kick_flush - consider issuing flush request
|
* blk_kick_flush - consider issuing flush request
|
||||||
* @q: request_queue being kicked
|
* @q: request_queue being kicked
|
||||||
diff --git a/block/blk-mq.c b/block/blk-mq.c
|
diff --git a/block/blk-mq.c b/block/blk-mq.c
|
||||||
index cb619ec8aaf2..601e40204d06 100644
|
index 82db8595bdaa..7dd1b6973c79 100644
|
||||||
--- a/block/blk-mq.c
|
--- a/block/blk-mq.c
|
||||||
+++ b/block/blk-mq.c
|
+++ b/block/blk-mq.c
|
||||||
@@ -937,7 +937,7 @@ static bool blk_mq_req_expired(struct request *rq, unsigned long *next)
|
@@ -937,7 +937,7 @@ static bool blk_mq_req_expired(struct request *rq, unsigned long *next)
|
Loading…
Reference in New Issue
Block a user