summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2018-08-24 13:17:51 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2018-08-24 13:17:51 -0400
commit5727a98ffeea8efee3e937ece992216814517421 (patch)
treefdd36d31ae1d18a542a36b4f2296e26bdc7235cf
parent2aed82b1188d43a3d9a4364635ad0e3c353836b3 (diff)
downloadlongterm-queue-4.12-5727a98ffeea8efee3e937ece992216814517421.tar.gz
drop patches with post-4.12 Fixes: tags
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--queue/IB-core-Verify-that-QP-is-security-enabled-in-create.patch52
-rw-r--r--queue/IB-hfi-Only-read-capability-registers-if-the-capabil.patch88
-rw-r--r--queue/Revert-mlx5-move-affinity-hints-assignments-to-gener.patch340
-rw-r--r--queue/USB-chipidea-msm-fix-ulpi-node-lookup.patch39
-rw-r--r--queue/block-don-t-let-passthrough-IO-go-into-.make_request.patch102
-rw-r--r--queue/block-fix-blk_rq_append_bio.patch158
-rw-r--r--queue/cpufreq-schedutil-Use-idle_calls-counter-of-the-remo.patch72
-rw-r--r--queue/ipv4-fib-Fix-metrics-match-when-deleting-a-route.patch58
-rw-r--r--queue/ipv6-Honor-specified-parameters-in-fibmatch-lookup.patch94
-rw-r--r--queue/ipv6-set-all.accept_dad-to-0-by-default.patch65
-rw-r--r--queue/net-mlx5-FPGA-return-EINVAL-if-size-is-zero.patch51
-rw-r--r--queue/net-sched-fix-static-key-imbalance-in-case-of-ingres.patch61
-rw-r--r--queue/phylink-ensure-AN-is-enabled.patch31
-rw-r--r--queue/phylink-ensure-the-PHY-interface-mode-is-appropriate.patch31
-rw-r--r--queue/series19
-rw-r--r--queue/skbuff-orphan-frags-before-zerocopy-clone.patch52
-rw-r--r--queue/skbuff-skb_copy_ubufs-must-release-uarg-even-without.patch43
-rw-r--r--queue/sparc64-repair-calling-incorrect-hweight-function-fr.patch32
-rw-r--r--queue/vxlan-restore-dev-mtu-setting-based-on-lower-device.patch56
-rw-r--r--queue/x86-32-Fix-kexec-with-stack-canary-CONFIG_CC_STACKPR.patch84
20 files changed, 0 insertions, 1528 deletions
diff --git a/queue/IB-core-Verify-that-QP-is-security-enabled-in-create.patch b/queue/IB-core-Verify-that-QP-is-security-enabled-in-create.patch
deleted file mode 100644
index 1655e2d..0000000
--- a/queue/IB-core-Verify-that-QP-is-security-enabled-in-create.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 4a50881bbac309e6f0684816a180bc3c14e1485d Mon Sep 17 00:00:00 2001
-From: Moni Shoua <monis@mellanox.com>
-Date: Sun, 24 Dec 2017 13:54:58 +0200
-Subject: [PATCH] IB/core: Verify that QP is security enabled in create and
- destroy
-
-commit 4a50881bbac309e6f0684816a180bc3c14e1485d upstream.
-
-The XRC target QP create flow sets up qp_sec only if there is an IB link with
-LSM security enabled. However, several other related uAPI entry points blindly
-follow the qp_sec NULL pointer, resulting in a possible oops.
-
-Check for NULL before using qp_sec.
-
-Cc: <stable@vger.kernel.org> # v4.12
-Fixes: d291f1a65232 ("IB/core: Enforce PKey security on QPs")
-Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
-Signed-off-by: Moni Shoua <monis@mellanox.com>
-Signed-off-by: Leon Romanovsky <leon@kernel.org>
-Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
-
-diff --git a/drivers/infiniband/core/security.c b/drivers/infiniband/core/security.c
-index feafdb961c48..59b2f96d986a 100644
---- a/drivers/infiniband/core/security.c
-+++ b/drivers/infiniband/core/security.c
-@@ -386,6 +386,9 @@ int ib_open_shared_qp_security(struct ib_qp *qp, struct ib_device *dev)
- if (ret)
- return ret;
-
-+ if (!qp->qp_sec)
-+ return 0;
-+
- mutex_lock(&real_qp->qp_sec->mutex);
- ret = check_qp_port_pkey_settings(real_qp->qp_sec->ports_pkeys,
- qp->qp_sec);
-diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
-index 3fb8fb6cc824..e36d27ed4daa 100644
---- a/drivers/infiniband/core/verbs.c
-+++ b/drivers/infiniband/core/verbs.c
-@@ -1438,7 +1438,8 @@ int ib_close_qp(struct ib_qp *qp)
- spin_unlock_irqrestore(&real_qp->device->event_handler_lock, flags);
-
- atomic_dec(&real_qp->usecnt);
-- ib_close_shared_qp_security(qp->qp_sec);
-+ if (qp->qp_sec)
-+ ib_close_shared_qp_security(qp->qp_sec);
- kfree(qp);
-
- return 0;
---
-2.15.0
-
diff --git a/queue/IB-hfi-Only-read-capability-registers-if-the-capabil.patch b/queue/IB-hfi-Only-read-capability-registers-if-the-capabil.patch
deleted file mode 100644
index 7227bfe..0000000
--- a/queue/IB-hfi-Only-read-capability-registers-if-the-capabil.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 4c009af473b2026caaa26107e34d7cc68dad7756 Mon Sep 17 00:00:00 2001
-From: "Michael J. Ruhl" <michael.j.ruhl@intel.com>
-Date: Fri, 22 Dec 2017 08:47:20 -0800
-Subject: [PATCH] IB/hfi: Only read capability registers if the capability
- exists
-
-commit 4c009af473b2026caaa26107e34d7cc68dad7756 upstream.
-
-During driver init, various registers are saved to allow restoration
-after an FLR or gen3 bump. Some of these registers are not available
-in some circumstances (i.e. Virtual machines).
-
-This bug makes the driver unusable when the PCI device is passed into
-a VM, it fails during probe.
-
-Delete unnecessary register read/write, and only access register if
-the capability exists.
-
-Cc: <stable@vger.kernel.org> # 4.14.x
-Fixes: a618b7e40af2 ("IB/hfi1: Move saving PCI values to a separate function")
-Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
-Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
-Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
-Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
-
-diff --git a/drivers/infiniband/hw/hfi1/hfi.h b/drivers/infiniband/hw/hfi1/hfi.h
-index 4a9b4d7efe63..8ce9118d4a7f 100644
---- a/drivers/infiniband/hw/hfi1/hfi.h
-+++ b/drivers/infiniband/hw/hfi1/hfi.h
-@@ -1131,7 +1131,6 @@ struct hfi1_devdata {
- u16 pcie_lnkctl;
- u16 pcie_devctl2;
- u32 pci_msix0;
-- u32 pci_lnkctl3;
- u32 pci_tph2;
-
- /*
-diff --git a/drivers/infiniband/hw/hfi1/pcie.c b/drivers/infiniband/hw/hfi1/pcie.c
-index 09e50fd2a08f..8c7e7a60b715 100644
---- a/drivers/infiniband/hw/hfi1/pcie.c
-+++ b/drivers/infiniband/hw/hfi1/pcie.c
-@@ -411,15 +411,12 @@ int restore_pci_variables(struct hfi1_devdata *dd)
- if (ret)
- goto error;
-
-- ret = pci_write_config_dword(dd->pcidev, PCIE_CFG_SPCIE1,
-- dd->pci_lnkctl3);
-- if (ret)
-- goto error;
--
-- ret = pci_write_config_dword(dd->pcidev, PCIE_CFG_TPH2, dd->pci_tph2);
-- if (ret)
-- goto error;
--
-+ if (pci_find_ext_capability(dd->pcidev, PCI_EXT_CAP_ID_TPH)) {
-+ ret = pci_write_config_dword(dd->pcidev, PCIE_CFG_TPH2,
-+ dd->pci_tph2);
-+ if (ret)
-+ goto error;
-+ }
- return 0;
-
- error:
-@@ -469,15 +466,12 @@ int save_pci_variables(struct hfi1_devdata *dd)
- if (ret)
- goto error;
-
-- ret = pci_read_config_dword(dd->pcidev, PCIE_CFG_SPCIE1,
-- &dd->pci_lnkctl3);
-- if (ret)
-- goto error;
--
-- ret = pci_read_config_dword(dd->pcidev, PCIE_CFG_TPH2, &dd->pci_tph2);
-- if (ret)
-- goto error;
--
-+ if (pci_find_ext_capability(dd->pcidev, PCI_EXT_CAP_ID_TPH)) {
-+ ret = pci_read_config_dword(dd->pcidev, PCIE_CFG_TPH2,
-+ &dd->pci_tph2);
-+ if (ret)
-+ goto error;
-+ }
- return 0;
-
- error:
---
-2.15.0
-
diff --git a/queue/Revert-mlx5-move-affinity-hints-assignments-to-gener.patch b/queue/Revert-mlx5-move-affinity-hints-assignments-to-gener.patch
deleted file mode 100644
index d9a3238..0000000
--- a/queue/Revert-mlx5-move-affinity-hints-assignments-to-gener.patch
+++ /dev/null
@@ -1,340 +0,0 @@
-From 231243c82793428467524227ae02ca451e6a98e7 Mon Sep 17 00:00:00 2001
-From: Saeed Mahameed <saeedm@mellanox.com>
-Date: Fri, 10 Nov 2017 15:59:52 +0900
-Subject: [PATCH] Revert "mlx5: move affinity hints assignments to generic
- code"
-
-commit 231243c82793428467524227ae02ca451e6a98e7 upstream.
-
-Before the offending commit, mlx5 core did the IRQ affinity itself,
-and it seems that the new generic code have some drawbacks and one
-of them is the lack for user ability to modify irq affinity after
-the initial affinity values got assigned.
-
-The issue is still being discussed and a solution in the new generic code
-is required, until then we need to revert this patch.
-
-This fixes the following issue:
-echo <new affinity> > /proc/irq/<x>/smp_affinity
-fails with -EIO
-
-This reverts commit a435393acafbf0ecff4deb3e3cb554b34f0d0664.
-Note: kept mlx5_get_vector_affinity in include/linux/mlx5/driver.h since
-it is used in mlx5_ib driver.
-
-Fixes: a435393acafb ("mlx5: move affinity hints assignments to generic code")
-Cc: Sagi Grimberg <sagi@grimberg.me>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: Jes Sorensen <jsorensen@fb.com>
-Reported-by: Jes Sorensen <jsorensen@fb.com>
-Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
-
-diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
-index c0872b3284cb..43f9054830e5 100644
---- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
-@@ -590,6 +590,7 @@ struct mlx5e_channel {
- struct mlx5_core_dev *mdev;
- struct hwtstamp_config *tstamp;
- int ix;
-+ int cpu;
- };
-
- struct mlx5e_channels {
-diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
-index d2b057a3e512..cbec66bc82f1 100644
---- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
-@@ -71,11 +71,6 @@ struct mlx5e_channel_param {
- struct mlx5e_cq_param icosq_cq;
- };
-
--static int mlx5e_get_node(struct mlx5e_priv *priv, int ix)
--{
-- return pci_irq_get_node(priv->mdev->pdev, MLX5_EQ_VEC_COMP_BASE + ix);
--}
--
- static bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev)
- {
- return MLX5_CAP_GEN(mdev, striding_rq) &&
-@@ -444,17 +439,16 @@ static int mlx5e_rq_alloc_mpwqe_info(struct mlx5e_rq *rq,
- int wq_sz = mlx5_wq_ll_get_size(&rq->wq);
- int mtt_sz = mlx5e_get_wqe_mtt_sz();
- int mtt_alloc = mtt_sz + MLX5_UMR_ALIGN - 1;
-- int node = mlx5e_get_node(c->priv, c->ix);
- int i;
-
- rq->mpwqe.info = kzalloc_node(wq_sz * sizeof(*rq->mpwqe.info),
-- GFP_KERNEL, node);
-+ GFP_KERNEL, cpu_to_node(c->cpu));
- if (!rq->mpwqe.info)
- goto err_out;
-
- /* We allocate more than mtt_sz as we will align the pointer */
-- rq->mpwqe.mtt_no_align = kzalloc_node(mtt_alloc * wq_sz,
-- GFP_KERNEL, node);
-+ rq->mpwqe.mtt_no_align = kzalloc_node(mtt_alloc * wq_sz, GFP_KERNEL,
-+ cpu_to_node(c->cpu));
- if (unlikely(!rq->mpwqe.mtt_no_align))
- goto err_free_wqe_info;
-
-@@ -562,7 +556,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
- int err;
- int i;
-
-- rqp->wq.db_numa_node = mlx5e_get_node(c->priv, c->ix);
-+ rqp->wq.db_numa_node = cpu_to_node(c->cpu);
-
- err = mlx5_wq_ll_create(mdev, &rqp->wq, rqc_wq, &rq->wq,
- &rq->wq_ctrl);
-@@ -629,8 +623,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
- default: /* MLX5_WQ_TYPE_LINKED_LIST */
- rq->wqe.frag_info =
- kzalloc_node(wq_sz * sizeof(*rq->wqe.frag_info),
-- GFP_KERNEL,
-- mlx5e_get_node(c->priv, c->ix));
-+ GFP_KERNEL, cpu_to_node(c->cpu));
- if (!rq->wqe.frag_info) {
- err = -ENOMEM;
- goto err_rq_wq_destroy;
-@@ -1000,13 +993,13 @@ static int mlx5e_alloc_xdpsq(struct mlx5e_channel *c,
- sq->uar_map = mdev->mlx5e_res.bfreg.map;
- sq->min_inline_mode = params->tx_min_inline_mode;
-
-- param->wq.db_numa_node = mlx5e_get_node(c->priv, c->ix);
-+ param->wq.db_numa_node = cpu_to_node(c->cpu);
- err = mlx5_wq_cyc_create(mdev, &param->wq, sqc_wq, &sq->wq, &sq->wq_ctrl);
- if (err)
- return err;
- sq->wq.db = &sq->wq.db[MLX5_SND_DBR];
-
-- err = mlx5e_alloc_xdpsq_db(sq, mlx5e_get_node(c->priv, c->ix));
-+ err = mlx5e_alloc_xdpsq_db(sq, cpu_to_node(c->cpu));
- if (err)
- goto err_sq_wq_destroy;
-
-@@ -1053,13 +1046,13 @@ static int mlx5e_alloc_icosq(struct mlx5e_channel *c,
- sq->channel = c;
- sq->uar_map = mdev->mlx5e_res.bfreg.map;
-
-- param->wq.db_numa_node = mlx5e_get_node(c->priv, c->ix);
-+ param->wq.db_numa_node = cpu_to_node(c->cpu);
- err = mlx5_wq_cyc_create(mdev, &param->wq, sqc_wq, &sq->wq, &sq->wq_ctrl);
- if (err)
- return err;
- sq->wq.db = &sq->wq.db[MLX5_SND_DBR];
-
-- err = mlx5e_alloc_icosq_db(sq, mlx5e_get_node(c->priv, c->ix));
-+ err = mlx5e_alloc_icosq_db(sq, cpu_to_node(c->cpu));
- if (err)
- goto err_sq_wq_destroy;
-
-@@ -1126,13 +1119,13 @@ static int mlx5e_alloc_txqsq(struct mlx5e_channel *c,
- if (MLX5_IPSEC_DEV(c->priv->mdev))
- set_bit(MLX5E_SQ_STATE_IPSEC, &sq->state);
-
-- param->wq.db_numa_node = mlx5e_get_node(c->priv, c->ix);
-+ param->wq.db_numa_node = cpu_to_node(c->cpu);
- err = mlx5_wq_cyc_create(mdev, &param->wq, sqc_wq, &sq->wq, &sq->wq_ctrl);
- if (err)
- return err;
- sq->wq.db = &sq->wq.db[MLX5_SND_DBR];
-
-- err = mlx5e_alloc_txqsq_db(sq, mlx5e_get_node(c->priv, c->ix));
-+ err = mlx5e_alloc_txqsq_db(sq, cpu_to_node(c->cpu));
- if (err)
- goto err_sq_wq_destroy;
-
-@@ -1504,8 +1497,8 @@ static int mlx5e_alloc_cq(struct mlx5e_channel *c,
- struct mlx5_core_dev *mdev = c->priv->mdev;
- int err;
-
-- param->wq.buf_numa_node = mlx5e_get_node(c->priv, c->ix);
-- param->wq.db_numa_node = mlx5e_get_node(c->priv, c->ix);
-+ param->wq.buf_numa_node = cpu_to_node(c->cpu);
-+ param->wq.db_numa_node = cpu_to_node(c->cpu);
- param->eq_ix = c->ix;
-
- err = mlx5e_alloc_cq_common(mdev, param, cq);
-@@ -1604,6 +1597,11 @@ static void mlx5e_close_cq(struct mlx5e_cq *cq)
- mlx5e_free_cq(cq);
- }
-
-+static int mlx5e_get_cpu(struct mlx5e_priv *priv, int ix)
-+{
-+ return cpumask_first(priv->mdev->priv.irq_info[ix].mask);
-+}
-+
- static int mlx5e_open_tx_cqs(struct mlx5e_channel *c,
- struct mlx5e_params *params,
- struct mlx5e_channel_param *cparam)
-@@ -1752,12 +1750,13 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
- {
- struct mlx5e_cq_moder icocq_moder = {0, 0};
- struct net_device *netdev = priv->netdev;
-+ int cpu = mlx5e_get_cpu(priv, ix);
- struct mlx5e_channel *c;
- unsigned int irq;
- int err;
- int eqn;
-
-- c = kzalloc_node(sizeof(*c), GFP_KERNEL, mlx5e_get_node(priv, ix));
-+ c = kzalloc_node(sizeof(*c), GFP_KERNEL, cpu_to_node(cpu));
- if (!c)
- return -ENOMEM;
-
-@@ -1765,6 +1764,7 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
- c->mdev = priv->mdev;
- c->tstamp = &priv->tstamp;
- c->ix = ix;
-+ c->cpu = cpu;
- c->pdev = &priv->mdev->pdev->dev;
- c->netdev = priv->netdev;
- c->mkey_be = cpu_to_be32(priv->mdev->mlx5e_res.mkey.key);
-@@ -1853,8 +1853,7 @@ static void mlx5e_activate_channel(struct mlx5e_channel *c)
- for (tc = 0; tc < c->num_tc; tc++)
- mlx5e_activate_txqsq(&c->sq[tc]);
- mlx5e_activate_rq(&c->rq);
-- netif_set_xps_queue(c->netdev,
-- mlx5_get_vector_affinity(c->priv->mdev, c->ix), c->ix);
-+ netif_set_xps_queue(c->netdev, get_cpu_mask(c->cpu), c->ix);
- }
-
- static void mlx5e_deactivate_channel(struct mlx5e_channel *c)
-diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
-index 5f323442cc5a..8a89c7e8cd63 100644
---- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
-@@ -317,9 +317,6 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
- {
- struct mlx5_priv *priv = &dev->priv;
- struct mlx5_eq_table *table = &priv->eq_table;
-- struct irq_affinity irqdesc = {
-- .pre_vectors = MLX5_EQ_VEC_COMP_BASE,
-- };
- int num_eqs = 1 << MLX5_CAP_GEN(dev, log_max_eq);
- int nvec;
-
-@@ -333,10 +330,9 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
- if (!priv->irq_info)
- goto err_free_msix;
-
-- nvec = pci_alloc_irq_vectors_affinity(dev->pdev,
-+ nvec = pci_alloc_irq_vectors(dev->pdev,
- MLX5_EQ_VEC_COMP_BASE + 1, nvec,
-- PCI_IRQ_MSIX | PCI_IRQ_AFFINITY,
-- &irqdesc);
-+ PCI_IRQ_MSIX);
- if (nvec < 0)
- return nvec;
-
-@@ -622,6 +618,63 @@ u64 mlx5_read_internal_timer(struct mlx5_core_dev *dev)
- return (u64)timer_l | (u64)timer_h1 << 32;
- }
-
-+static int mlx5_irq_set_affinity_hint(struct mlx5_core_dev *mdev, int i)
-+{
-+ struct mlx5_priv *priv = &mdev->priv;
-+ int irq = pci_irq_vector(mdev->pdev, MLX5_EQ_VEC_COMP_BASE + i);
-+
-+ if (!zalloc_cpumask_var(&priv->irq_info[i].mask, GFP_KERNEL)) {
-+ mlx5_core_warn(mdev, "zalloc_cpumask_var failed");
-+ return -ENOMEM;
-+ }
-+
-+ cpumask_set_cpu(cpumask_local_spread(i, priv->numa_node),
-+ priv->irq_info[i].mask);
-+
-+ if (IS_ENABLED(CONFIG_SMP) &&
-+ irq_set_affinity_hint(irq, priv->irq_info[i].mask))
-+ mlx5_core_warn(mdev, "irq_set_affinity_hint failed, irq 0x%.4x", irq);
-+
-+ return 0;
-+}
-+
-+static void mlx5_irq_clear_affinity_hint(struct mlx5_core_dev *mdev, int i)
-+{
-+ struct mlx5_priv *priv = &mdev->priv;
-+ int irq = pci_irq_vector(mdev->pdev, MLX5_EQ_VEC_COMP_BASE + i);
-+
-+ irq_set_affinity_hint(irq, NULL);
-+ free_cpumask_var(priv->irq_info[i].mask);
-+}
-+
-+static int mlx5_irq_set_affinity_hints(struct mlx5_core_dev *mdev)
-+{
-+ int err;
-+ int i;
-+
-+ for (i = 0; i < mdev->priv.eq_table.num_comp_vectors; i++) {
-+ err = mlx5_irq_set_affinity_hint(mdev, i);
-+ if (err)
-+ goto err_out;
-+ }
-+
-+ return 0;
-+
-+err_out:
-+ for (i--; i >= 0; i--)
-+ mlx5_irq_clear_affinity_hint(mdev, i);
-+
-+ return err;
-+}
-+
-+static void mlx5_irq_clear_affinity_hints(struct mlx5_core_dev *mdev)
-+{
-+ int i;
-+
-+ for (i = 0; i < mdev->priv.eq_table.num_comp_vectors; i++)
-+ mlx5_irq_clear_affinity_hint(mdev, i);
-+}
-+
- int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn,
- unsigned int *irqn)
- {
-@@ -1097,6 +1150,12 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
- goto err_stop_eqs;
- }
-
-+ err = mlx5_irq_set_affinity_hints(dev);
-+ if (err) {
-+ dev_err(&pdev->dev, "Failed to alloc affinity hint cpumask\n");
-+ goto err_affinity_hints;
-+ }
-+
- err = mlx5_init_fs(dev);
- if (err) {
- dev_err(&pdev->dev, "Failed to init flow steering\n");
-@@ -1154,6 +1213,9 @@ err_sriov:
- mlx5_cleanup_fs(dev);
-
- err_fs:
-+ mlx5_irq_clear_affinity_hints(dev);
-+
-+err_affinity_hints:
- free_comp_eqs(dev);
-
- err_stop_eqs:
-@@ -1222,6 +1284,7 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
-
- mlx5_sriov_detach(dev);
- mlx5_cleanup_fs(dev);
-+ mlx5_irq_clear_affinity_hints(dev);
- free_comp_eqs(dev);
- mlx5_stop_eqs(dev);
- mlx5_put_uars_page(dev, priv->uar);
-diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
-index a886b51511ab..40a6f33c4cde 100644
---- a/include/linux/mlx5/driver.h
-+++ b/include/linux/mlx5/driver.h
-@@ -556,6 +556,7 @@ struct mlx5_core_sriov {
- };
-
- struct mlx5_irq_info {
-+ cpumask_var_t mask;
- char name[MLX5_MAX_IRQ_NAME];
- };
-
---
-2.15.0
-
diff --git a/queue/USB-chipidea-msm-fix-ulpi-node-lookup.patch b/queue/USB-chipidea-msm-fix-ulpi-node-lookup.patch
deleted file mode 100644
index b1582dc..0000000
--- a/queue/USB-chipidea-msm-fix-ulpi-node-lookup.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 964728f9f407eca0b417fdf8e784b7a76979490c Mon Sep 17 00:00:00 2001
-From: Johan Hovold <johan@kernel.org>
-Date: Mon, 13 Nov 2017 11:12:58 +0100
-Subject: [PATCH] USB: chipidea: msm: fix ulpi-node lookup
-
-commit 964728f9f407eca0b417fdf8e784b7a76979490c upstream.
-
-Fix child-node lookup during probe, which ended up searching the whole
-device tree depth-first starting at the parent rather than just matching
-on its children.
-
-Note that the original premature free of the parent node has already
-been fixed separately, but that fix was apparently never backported to
-stable.
-
-Fixes: 47654a162081 ("usb: chipidea: msm: Restore wrapper settings after reset")
-Fixes: b74c43156c0c ("usb: chipidea: msm: ci_hdrc_msm_probe() missing of_node_get()")
-Cc: stable <stable@vger.kernel.org> # 4.10: b74c43156c0c
-Cc: Stephen Boyd <stephen.boyd@linaro.org>
-Cc: Frank Rowand <frank.rowand@sony.com>
-Signed-off-by: Johan Hovold <johan@kernel.org>
-Signed-off-by: Peter Chen <peter.chen@nxp.com>
-
-diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c
-index 3593ce0ec641..880009987460 100644
---- a/drivers/usb/chipidea/ci_hdrc_msm.c
-+++ b/drivers/usb/chipidea/ci_hdrc_msm.c
-@@ -247,7 +247,7 @@ static int ci_hdrc_msm_probe(struct platform_device *pdev)
- if (ret)
- goto err_mux;
-
-- ulpi_node = of_find_node_by_name(of_node_get(pdev->dev.of_node), "ulpi");
-+ ulpi_node = of_get_child_by_name(pdev->dev.of_node, "ulpi");
- if (ulpi_node) {
- phy_node = of_get_next_available_child(ulpi_node, NULL);
- ci->hsic = of_device_is_compatible(phy_node, "qcom,usb-hsic-phy");
---
-2.15.0
-
diff --git a/queue/block-don-t-let-passthrough-IO-go-into-.make_request.patch b/queue/block-don-t-let-passthrough-IO-go-into-.make_request.patch
deleted file mode 100644
index a35d61b..0000000
--- a/queue/block-don-t-let-passthrough-IO-go-into-.make_request.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 14cb0dc6479dc5ebc63b3a459a5d89a2f1b39fed Mon Sep 17 00:00:00 2001
-From: Ming Lei <ming.lei@redhat.com>
-Date: Mon, 18 Dec 2017 15:40:43 +0800
-Subject: [PATCH] block: don't let passthrough IO go into .make_request_fn()
-
-commit 14cb0dc6479dc5ebc63b3a459a5d89a2f1b39fed upstream.
-
-Commit a8821f3f3("block: Improvements to bounce-buffer handling") tries
-to make sure that the bio to .make_request_fn won't exceed BIO_MAX_PAGES,
-but ignores that passthrough I/O can use blk_queue_bounce() too.
-Especially, passthrough IO may not be sector-aligned, and the check
-of 'sectors < bio_sectors(*bio_orig)' inside __blk_queue_bounce() may
-become true even though the max bvec number doesn't exceed BIO_MAX_PAGES,
-then cause the bio splitted, and the original passthrough bio is submited
-to generic_make_request().
-
-This patch fixes this issue by checking if the bio is passthrough IO,
-and use bio_kmalloc() to allocate the cloned passthrough bio.
-
-Cc: NeilBrown <neilb@suse.com>
-Fixes: a8821f3f3("block: Improvements to bounce-buffer handling")
-Tested-by: Michele Ballabio <barra_cuda@katamail.com>
-Signed-off-by: Ming Lei <ming.lei@redhat.com>
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
-diff --git a/block/bounce.c b/block/bounce.c
-index fceb1a96480b..1d05c422c932 100644
---- a/block/bounce.c
-+++ b/block/bounce.c
-@@ -200,6 +200,7 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig,
- unsigned i = 0;
- bool bounce = false;
- int sectors = 0;
-+ bool passthrough = bio_is_passthrough(*bio_orig);
-
- bio_for_each_segment(from, *bio_orig, iter) {
- if (i++ < BIO_MAX_PAGES)
-@@ -210,13 +211,14 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig,
- if (!bounce)
- return;
-
-- if (sectors < bio_sectors(*bio_orig)) {
-+ if (!passthrough && sectors < bio_sectors(*bio_orig)) {
- bio = bio_split(*bio_orig, sectors, GFP_NOIO, bounce_bio_split);
- bio_chain(bio, *bio_orig);
- generic_make_request(*bio_orig);
- *bio_orig = bio;
- }
-- bio = bio_clone_bioset(*bio_orig, GFP_NOIO, bounce_bio_set);
-+ bio = bio_clone_bioset(*bio_orig, GFP_NOIO, passthrough ? NULL :
-+ bounce_bio_set);
-
- bio_for_each_segment_all(to, bio, i) {
- struct page *page = to->bv_page;
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 8089ca17db9a..abd06f540863 100644
---- a/include/linux/blkdev.h
-+++ b/include/linux/blkdev.h
-@@ -241,14 +241,24 @@ struct request {
- struct request *next_rq;
- };
-
-+static inline bool blk_op_is_scsi(unsigned int op)
-+{
-+ return op == REQ_OP_SCSI_IN || op == REQ_OP_SCSI_OUT;
-+}
-+
-+static inline bool blk_op_is_private(unsigned int op)
-+{
-+ return op == REQ_OP_DRV_IN || op == REQ_OP_DRV_OUT;
-+}
-+
- static inline bool blk_rq_is_scsi(struct request *rq)
- {
-- return req_op(rq) == REQ_OP_SCSI_IN || req_op(rq) == REQ_OP_SCSI_OUT;
-+ return blk_op_is_scsi(req_op(rq));
- }
-
- static inline bool blk_rq_is_private(struct request *rq)
- {
-- return req_op(rq) == REQ_OP_DRV_IN || req_op(rq) == REQ_OP_DRV_OUT;
-+ return blk_op_is_private(req_op(rq));
- }
-
- static inline bool blk_rq_is_passthrough(struct request *rq)
-@@ -256,6 +266,13 @@ static inline bool blk_rq_is_passthrough(struct request *rq)
- return blk_rq_is_scsi(rq) || blk_rq_is_private(rq);
- }
-
-+static inline bool bio_is_passthrough(struct bio *bio)
-+{
-+ unsigned op = bio_op(bio);
-+
-+ return blk_op_is_scsi(op) || blk_op_is_private(op);
-+}
-+
- static inline unsigned short req_get_ioprio(struct request *req)
- {
- return req->ioprio;
---
-2.15.0
-
diff --git a/queue/block-fix-blk_rq_append_bio.patch b/queue/block-fix-blk_rq_append_bio.patch
deleted file mode 100644
index 6a6b69b..0000000
--- a/queue/block-fix-blk_rq_append_bio.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 0abc2a10389f0c9070f76ca906c7382788036b93 Mon Sep 17 00:00:00 2001
-From: Jens Axboe <axboe@kernel.dk>
-Date: Mon, 18 Dec 2017 15:40:44 +0800
-Subject: [PATCH] block: fix blk_rq_append_bio
-
-commit 0abc2a10389f0c9070f76ca906c7382788036b93 upstream.
-
-Commit caa4b02476e3(blk-map: call blk_queue_bounce from blk_rq_append_bio)
-moves blk_queue_bounce() into blk_rq_append_bio(), but don't consider
-the fact that the bounced bio becomes invisible to caller since the
-parameter type is 'struct bio *'. Make it a pointer to a pointer to
-a bio, so the caller sees the right bio also after a bounce.
-
-Fixes: caa4b02476e3 ("blk-map: call blk_queue_bounce from blk_rq_append_bio")
-Cc: Christoph Hellwig <hch@lst.de>
-Reported-by: Michele Ballabio <barra_cuda@katamail.com>
-(handling failure of blk_rq_append_bio(), only call bio_get() after
-blk_rq_append_bio() returns OK)
-Tested-by: Michele Ballabio <barra_cuda@katamail.com>
-Signed-off-by: Ming Lei <ming.lei@redhat.com>
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
-diff --git a/block/blk-map.c b/block/blk-map.c
-index b21f8e86f120..d3a94719f03f 100644
---- a/block/blk-map.c
-+++ b/block/blk-map.c
-@@ -12,22 +12,29 @@
- #include "blk.h"
-
- /*
-- * Append a bio to a passthrough request. Only works can be merged into
-- * the request based on the driver constraints.
-+ * Append a bio to a passthrough request. Only works if the bio can be merged
-+ * into the request based on the driver constraints.
- */
--int blk_rq_append_bio(struct request *rq, struct bio *bio)
-+int blk_rq_append_bio(struct request *rq, struct bio **bio)
- {
-- blk_queue_bounce(rq->q, &bio);
-+ struct bio *orig_bio = *bio;
-+
-+ blk_queue_bounce(rq->q, bio);
-
- if (!rq->bio) {
-- blk_rq_bio_prep(rq->q, rq, bio);
-+ blk_rq_bio_prep(rq->q, rq, *bio);
- } else {
-- if (!ll_back_merge_fn(rq->q, rq, bio))
-+ if (!ll_back_merge_fn(rq->q, rq, *bio)) {
-+ if (orig_bio != *bio) {
-+ bio_put(*bio);
-+ *bio = orig_bio;
-+ }
- return -EINVAL;
-+ }
-
-- rq->biotail->bi_next = bio;
-- rq->biotail = bio;
-- rq->__data_len += bio->bi_iter.bi_size;
-+ rq->biotail->bi_next = *bio;
-+ rq->biotail = *bio;
-+ rq->__data_len += (*bio)->bi_iter.bi_size;
- }
-
- return 0;
-@@ -73,14 +80,12 @@ static int __blk_rq_map_user_iov(struct request *rq,
- * We link the bounce buffer in and could have to traverse it
- * later so we have to get a ref to prevent it from being freed
- */
-- ret = blk_rq_append_bio(rq, bio);
-- bio_get(bio);
-+ ret = blk_rq_append_bio(rq, &bio);
- if (ret) {
-- bio_endio(bio);
- __blk_rq_unmap_user(orig_bio);
-- bio_put(bio);
- return ret;
- }
-+ bio_get(bio);
-
- return 0;
- }
-@@ -213,7 +218,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
- int reading = rq_data_dir(rq) == READ;
- unsigned long addr = (unsigned long) kbuf;
- int do_copy = 0;
-- struct bio *bio;
-+ struct bio *bio, *orig_bio;
- int ret;
-
- if (len > (queue_max_hw_sectors(q) << 9))
-@@ -236,10 +241,11 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
- if (do_copy)
- rq->rq_flags |= RQF_COPY_USER;
-
-- ret = blk_rq_append_bio(rq, bio);
-+ orig_bio = bio;
-+ ret = blk_rq_append_bio(rq, &bio);
- if (unlikely(ret)) {
- /* request is too big */
-- bio_put(bio);
-+ bio_put(orig_bio);
- return ret;
- }
-
-diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c
-index a4f28b7e4c65..e18877177f1b 100644
---- a/drivers/scsi/osd/osd_initiator.c
-+++ b/drivers/scsi/osd/osd_initiator.c
-@@ -1576,7 +1576,9 @@ static struct request *_make_request(struct request_queue *q, bool has_write,
- return req;
-
- for_each_bio(bio) {
-- ret = blk_rq_append_bio(req, bio);
-+ struct bio *bounce_bio = bio;
-+
-+ ret = blk_rq_append_bio(req, &bounce_bio);
- if (ret)
- return ERR_PTR(ret);
- }
-diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
-index 7c69b4a9694d..0d99b242e82e 100644
---- a/drivers/target/target_core_pscsi.c
-+++ b/drivers/target/target_core_pscsi.c
-@@ -920,7 +920,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
- " %d i: %d bio: %p, allocating another"
- " bio\n", bio->bi_vcnt, i, bio);
-
-- rc = blk_rq_append_bio(req, bio);
-+ rc = blk_rq_append_bio(req, &bio);
- if (rc) {
- pr_err("pSCSI: failed to append bio\n");
- goto fail;
-@@ -938,7 +938,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
- }
-
- if (bio) {
-- rc = blk_rq_append_bio(req, bio);
-+ rc = blk_rq_append_bio(req, &bio);
- if (rc) {
- pr_err("pSCSI: failed to append bio\n");
- goto fail;
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index abd06f540863..100d0df38026 100644
---- a/include/linux/blkdev.h
-+++ b/include/linux/blkdev.h
-@@ -965,7 +965,7 @@ extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src,
- extern void blk_rq_unprep_clone(struct request *rq);
- extern blk_status_t blk_insert_cloned_request(struct request_queue *q,
- struct request *rq);
--extern int blk_rq_append_bio(struct request *rq, struct bio *bio);
-+extern int blk_rq_append_bio(struct request *rq, struct bio **bio);
- extern void blk_delay_queue(struct request_queue *, unsigned long);
- extern void blk_queue_split(struct request_queue *, struct bio **);
- extern void blk_recount_segments(struct request_queue *, struct bio *);
---
-2.15.0
-
diff --git a/queue/cpufreq-schedutil-Use-idle_calls-counter-of-the-remo.patch b/queue/cpufreq-schedutil-Use-idle_calls-counter-of-the-remo.patch
deleted file mode 100644
index 9d5ad73..0000000
--- a/queue/cpufreq-schedutil-Use-idle_calls-counter-of-the-remo.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 466a2b42d67644447a1765276259a3ea5531ddff Mon Sep 17 00:00:00 2001
-From: Joel Fernandes <joelaf@google.com>
-Date: Thu, 21 Dec 2017 02:22:45 +0100
-Subject: [PATCH] cpufreq: schedutil: Use idle_calls counter of the remote CPU
-
-commit 466a2b42d67644447a1765276259a3ea5531ddff upstream.
-
-Since the recent remote cpufreq callback work, its possible that a cpufreq
-update is triggered from a remote CPU. For single policies however, the current
-code uses the local CPU when trying to determine if the remote sg_cpu entered
-idle or is busy. This is incorrect. To remedy this, compare with the nohz tick
-idle_calls counter of the remote CPU.
-
-Fixes: 674e75411fc2 (sched: cpufreq: Allow remote cpufreq callbacks)
-Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
-Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Signed-off-by: Joel Fernandes <joelaf@google.com>
-Cc: 4.14+ <stable@vger.kernel.org> # 4.14+
-Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-
-diff --git a/include/linux/tick.h b/include/linux/tick.h
-index f442d1a42025..7cc35921218e 100644
---- a/include/linux/tick.h
-+++ b/include/linux/tick.h
-@@ -119,6 +119,7 @@ extern void tick_nohz_idle_exit(void);
- extern void tick_nohz_irq_exit(void);
- extern ktime_t tick_nohz_get_sleep_length(void);
- extern unsigned long tick_nohz_get_idle_calls(void);
-+extern unsigned long tick_nohz_get_idle_calls_cpu(int cpu);
- extern u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time);
- extern u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time);
- #else /* !CONFIG_NO_HZ_COMMON */
-diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
-index 2f52ec0f1539..d6717a3331a1 100644
---- a/kernel/sched/cpufreq_schedutil.c
-+++ b/kernel/sched/cpufreq_schedutil.c
-@@ -244,7 +244,7 @@ static void sugov_iowait_boost(struct sugov_cpu *sg_cpu, unsigned long *util,
- #ifdef CONFIG_NO_HZ_COMMON
- static bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu)
- {
-- unsigned long idle_calls = tick_nohz_get_idle_calls();
-+ unsigned long idle_calls = tick_nohz_get_idle_calls_cpu(sg_cpu->cpu);
- bool ret = idle_calls == sg_cpu->saved_idle_calls;
-
- sg_cpu->saved_idle_calls = idle_calls;
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index 99578f06c8d4..77555faf6fbc 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -985,6 +985,19 @@ ktime_t tick_nohz_get_sleep_length(void)
- return ts->sleep_length;
- }
-
-+/**
-+ * tick_nohz_get_idle_calls_cpu - return the current idle calls counter value
-+ * for a particular CPU.
-+ *
-+ * Called from the schedutil frequency scaling governor in scheduler context.
-+ */
-+unsigned long tick_nohz_get_idle_calls_cpu(int cpu)
-+{
-+ struct tick_sched *ts = tick_get_tick_sched(cpu);
-+
-+ return ts->idle_calls;
-+}
-+
- /**
- * tick_nohz_get_idle_calls - return the current idle calls counter value
- *
---
-2.15.0
-
diff --git a/queue/ipv4-fib-Fix-metrics-match-when-deleting-a-route.patch b/queue/ipv4-fib-Fix-metrics-match-when-deleting-a-route.patch
deleted file mode 100644
index 9a16f4c..0000000
--- a/queue/ipv4-fib-Fix-metrics-match-when-deleting-a-route.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From d03a45572efa068fa64db211d6d45222660e76c5 Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil@nwl.cc>
-Date: Tue, 19 Dec 2017 15:17:13 +0100
-Subject: [PATCH] ipv4: fib: Fix metrics match when deleting a route
-
-commit d03a45572efa068fa64db211d6d45222660e76c5 upstream.
-
-The recently added fib_metrics_match() causes a regression for routes
-with both RTAX_FEATURES and RTAX_CC_ALGO if the latter has
-TCP_CONG_NEEDS_ECN flag set:
-
-| # ip link add d0 type dummy
-| # ip link set d0 up
-| # ip route add 172.29.29.0/24 dev d0 features ecn congctl dctcp
-| # ip route del 172.29.29.0/24 dev d0 features ecn congctl dctcp
-| RTNETLINK answers: No such process
-
-During route insertion, fib_convert_metrics() detects that the given CC
-algo requires ECN and hence sets DST_FEATURE_ECN_CA bit in
-RTAX_FEATURES.
-
-During route deletion though, fib_metrics_match() compares stored
-RTAX_FEATURES value with that from userspace (which obviously has no
-knowledge about DST_FEATURE_ECN_CA) and fails.
-
-Fixes: 5f9ae3d9e7e4a ("ipv4: do metrics match when looking up and deleting a route")
-Signed-off-by: Phil Sutter <phil@nwl.cc>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
-index f04d944f8abe..c586597da20d 100644
---- a/net/ipv4/fib_semantics.c
-+++ b/net/ipv4/fib_semantics.c
-@@ -698,7 +698,7 @@ bool fib_metrics_match(struct fib_config *cfg, struct fib_info *fi)
-
- nla_for_each_attr(nla, cfg->fc_mx, cfg->fc_mx_len, remaining) {
- int type = nla_type(nla);
-- u32 val;
-+ u32 fi_val, val;
-
- if (!type)
- continue;
-@@ -715,7 +715,11 @@ bool fib_metrics_match(struct fib_config *cfg, struct fib_info *fi)
- val = nla_get_u32(nla);
- }
-
-- if (fi->fib_metrics->metrics[type - 1] != val)
-+ fi_val = fi->fib_metrics->metrics[type - 1];
-+ if (type == RTAX_FEATURES)
-+ fi_val &= ~DST_FEATURE_ECN_CA;
-+
-+ if (fi_val != val)
- return false;
- }
-
---
-2.15.0
-
diff --git a/queue/ipv6-Honor-specified-parameters-in-fibmatch-lookup.patch b/queue/ipv6-Honor-specified-parameters-in-fibmatch-lookup.patch
deleted file mode 100644
index e891a64..0000000
--- a/queue/ipv6-Honor-specified-parameters-in-fibmatch-lookup.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 58acfd714e6b02e8617448b431c2b64a2f1f0792 Mon Sep 17 00:00:00 2001
-From: Ido Schimmel <idosch@mellanox.com>
-Date: Wed, 20 Dec 2017 12:28:25 +0200
-Subject: [PATCH] ipv6: Honor specified parameters in fibmatch lookup
-
-commit 58acfd714e6b02e8617448b431c2b64a2f1f0792 upstream.
-
-Currently, parameters such as oif and source address are not taken into
-account during fibmatch lookup. Example (IPv4 for reference) before
-patch:
-
-$ ip -4 route show
-192.0.2.0/24 dev dummy0 proto kernel scope link src 192.0.2.1
-198.51.100.0/24 dev dummy1 proto kernel scope link src 198.51.100.1
-
-$ ip -6 route show
-2001:db8:1::/64 dev dummy0 proto kernel metric 256 pref medium
-2001:db8:2::/64 dev dummy1 proto kernel metric 256 pref medium
-fe80::/64 dev dummy0 proto kernel metric 256 pref medium
-fe80::/64 dev dummy1 proto kernel metric 256 pref medium
-
-$ ip -4 route get fibmatch 192.0.2.2 oif dummy0
-192.0.2.0/24 dev dummy0 proto kernel scope link src 192.0.2.1
-$ ip -4 route get fibmatch 192.0.2.2 oif dummy1
-RTNETLINK answers: No route to host
-
-$ ip -6 route get fibmatch 2001:db8:1::2 oif dummy0
-2001:db8:1::/64 dev dummy0 proto kernel metric 256 pref medium
-$ ip -6 route get fibmatch 2001:db8:1::2 oif dummy1
-2001:db8:1::/64 dev dummy0 proto kernel metric 256 pref medium
-
-After:
-
-$ ip -6 route get fibmatch 2001:db8:1::2 oif dummy0
-2001:db8:1::/64 dev dummy0 proto kernel metric 256 pref medium
-$ ip -6 route get fibmatch 2001:db8:1::2 oif dummy1
-RTNETLINK answers: Network is unreachable
-
-The problem stems from the fact that the necessary route lookup flags
-are not set based on these parameters.
-
-Instead of duplicating the same logic for fibmatch, we can simply
-resolve the original route from its copy and dump it instead.
-
-Fixes: 18c3a61c4264 ("net: ipv6: RTM_GETROUTE: return matched fib result when requested")
-Signed-off-by: Ido Schimmel <idosch@mellanox.com>
-Acked-by: David Ahern <dsahern@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/net/ipv6/route.c b/net/ipv6/route.c
-index 2bc91c349273..0458b761f3c5 100644
---- a/net/ipv6/route.c
-+++ b/net/ipv6/route.c
-@@ -4298,19 +4298,13 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
- if (!ipv6_addr_any(&fl6.saddr))
- flags |= RT6_LOOKUP_F_HAS_SADDR;
-
-- if (!fibmatch)
-- dst = ip6_route_input_lookup(net, dev, &fl6, flags);
-- else
-- dst = ip6_route_lookup(net, &fl6, 0);
-+ dst = ip6_route_input_lookup(net, dev, &fl6, flags);
-
- rcu_read_unlock();
- } else {
- fl6.flowi6_oif = oif;
-
-- if (!fibmatch)
-- dst = ip6_route_output(net, NULL, &fl6);
-- else
-- dst = ip6_route_lookup(net, &fl6, 0);
-+ dst = ip6_route_output(net, NULL, &fl6);
- }
-
-
-@@ -4327,6 +4321,15 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
- goto errout;
- }
-
-+ if (fibmatch && rt->dst.from) {
-+ struct rt6_info *ort = container_of(rt->dst.from,
-+ struct rt6_info, dst);
-+
-+ dst_hold(&ort->dst);
-+ ip6_rt_put(rt);
-+ rt = ort;
-+ }
-+
- skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
- if (!skb) {
- ip6_rt_put(rt);
---
-2.15.0
-
diff --git a/queue/ipv6-set-all.accept_dad-to-0-by-default.patch b/queue/ipv6-set-all.accept_dad-to-0-by-default.patch
deleted file mode 100644
index c2e2b17..0000000
--- a/queue/ipv6-set-all.accept_dad-to-0-by-default.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 094009531612246d9e13f9e0c3ae2205d7f63a0a Mon Sep 17 00:00:00 2001
-From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
-Date: Tue, 14 Nov 2017 14:21:32 +0100
-Subject: [PATCH] ipv6: set all.accept_dad to 0 by default
-
-commit 094009531612246d9e13f9e0c3ae2205d7f63a0a upstream.
-
-With commits 35e015e1f577 and a2d3f3e33853, the global 'accept_dad' flag
-is also taken into account (default value is 1). If either global or
-per-interface flag is non-zero, DAD will be enabled on a given interface.
-
-This is not backward compatible: before those patches, the user could
-disable DAD just by setting the per-interface flag to 0. Now, the
-user instead needs to set both flags to 0 to actually disable DAD.
-
-Restore the previous behaviour by setting the default for the global
-'accept_dad' flag to 0. This way, DAD is still enabled by default,
-as per-interface flags are set to 1 on device creation, but setting
-them to 0 is enough to disable DAD on a given interface.
-
-- Before 35e015e1f57a7 and a2d3f3e33853:
- global per-interface DAD enabled
-[default] 1 1 yes
- X 0 no
- X 1 yes
-
-- After 35e015e1f577 and a2d3f3e33853:
- global per-interface DAD enabled
-[default] 1 1 yes
- 0 0 no
- 0 1 yes
- 1 0 yes
-
-- After this fix:
- global per-interface DAD enabled
- 1 1 yes
- 0 0 no
-[default] 0 1 yes
- 1 0 yes
-
-Fixes: 35e015e1f577 ("ipv6: fix net.ipv6.conf.all interface DAD handlers")
-Fixes: a2d3f3e33853 ("ipv6: fix net.ipv6.conf.all.accept_dad behaviour for real")
-CC: Stefano Brivio <sbrivio@redhat.com>
-CC: Matteo Croce <mcroce@redhat.com>
-CC: Erik Kline <ek@google.com>
-Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
-Acked-by: Stefano Brivio <sbrivio@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index a6dffd65eb9d..a0ae1c9d37df 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -231,7 +231,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
- .proxy_ndp = 0,
- .accept_source_route = 0, /* we do not accept RH0 by default. */
- .disable_ipv6 = 0,
-- .accept_dad = 1,
-+ .accept_dad = 0,
- .suppress_frag_ndisc = 1,
- .accept_ra_mtu = 1,
- .stable_secret = {
---
-2.15.0
-
diff --git a/queue/net-mlx5-FPGA-return-EINVAL-if-size-is-zero.patch b/queue/net-mlx5-FPGA-return-EINVAL-if-size-is-zero.patch
deleted file mode 100644
index 595173e..0000000
--- a/queue/net-mlx5-FPGA-return-EINVAL-if-size-is-zero.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From bae115a2bb479142605726e6aa130f43f50e801a Mon Sep 17 00:00:00 2001
-From: Kamal Heib <kamalh@mellanox.com>
-Date: Sun, 29 Oct 2017 04:03:37 +0200
-Subject: [PATCH] net/mlx5: FPGA, return -EINVAL if size is zero
-
-commit bae115a2bb479142605726e6aa130f43f50e801a upstream.
-
-Currently, if a size of zero is passed to
-mlx5_fpga_mem_{read|write}_i2c()
-the "err" return value will not be initialized, which triggers gcc
-warnings:
-
-[..]/mlx5/core/fpga/sdk.c:87 mlx5_fpga_mem_read_i2c() error:
-uninitialized symbol 'err'.
-[..]/mlx5/core/fpga/sdk.c:115 mlx5_fpga_mem_write_i2c() error:
-uninitialized symbol 'err'.
-
-fix that.
-
-Fixes: a9956d35d199 ('net/mlx5: FPGA, Add SBU infrastructure')
-Signed-off-by: Kamal Heib <kamalh@mellanox.com>
-Reviewed-by: Yevgeny Kliteynik <kliteyn@mellanox.com>
-Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
-
-diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/sdk.c b/drivers/net/ethernet/mellanox/mlx5/core/fpga/sdk.c
-index 3c11d6e2160a..14962969c5ba 100644
---- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/sdk.c
-+++ b/drivers/net/ethernet/mellanox/mlx5/core/fpga/sdk.c
-@@ -66,6 +66,9 @@ static int mlx5_fpga_mem_read_i2c(struct mlx5_fpga_device *fdev, size_t size,
- u8 actual_size;
- int err;
-
-+ if (!size)
-+ return -EINVAL;
-+
- if (!fdev->mdev)
- return -ENOTCONN;
-
-@@ -95,6 +98,9 @@ static int mlx5_fpga_mem_write_i2c(struct mlx5_fpga_device *fdev, size_t size,
- u8 actual_size;
- int err;
-
-+ if (!size)
-+ return -EINVAL;
-+
- if (!fdev->mdev)
- return -ENOTCONN;
-
---
-2.15.0
-
diff --git a/queue/net-sched-fix-static-key-imbalance-in-case-of-ingres.patch b/queue/net-sched-fix-static-key-imbalance-in-case-of-ingres.patch
deleted file mode 100644
index 7dbc980..0000000
--- a/queue/net-sched-fix-static-key-imbalance-in-case-of-ingres.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From b59e6979a86384e68b0ab6ffeab11f0034fba82d Mon Sep 17 00:00:00 2001
-From: Jiri Pirko <jiri@mellanox.com>
-Date: Fri, 15 Dec 2017 12:40:13 +0100
-Subject: [PATCH] net: sched: fix static key imbalance in case of
- ingress/clsact_init error
-
-commit b59e6979a86384e68b0ab6ffeab11f0034fba82d upstream.
-
-Move static key increments to the beginning of the init function
-so they pair 1:1 with decrements in ingress/clsact_destroy,
-which is called in case ingress/clsact_init fails.
-
-Fixes: 6529eaba33f0 ("net: sched: introduce tcf block infractructure")
-Signed-off-by: Jiri Pirko <jiri@mellanox.com>
-Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/net/sched/sch_ingress.c b/net/sched/sch_ingress.c
-index 5e1cd2e5df87..fc1286f499c1 100644
---- a/net/sched/sch_ingress.c
-+++ b/net/sched/sch_ingress.c
-@@ -68,6 +68,8 @@ static int ingress_init(struct Qdisc *sch, struct nlattr *opt)
- struct net_device *dev = qdisc_dev(sch);
- int err;
-
-+ net_inc_ingress_queue();
-+
- mini_qdisc_pair_init(&q->miniqp, sch, &dev->miniq_ingress);
-
- q->block_info.binder_type = TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS;
-@@ -78,7 +80,6 @@ static int ingress_init(struct Qdisc *sch, struct nlattr *opt)
- if (err)
- return err;
-
-- net_inc_ingress_queue();
- sch->flags |= TCQ_F_CPUSTATS;
-
- return 0;
-@@ -172,6 +173,9 @@ static int clsact_init(struct Qdisc *sch, struct nlattr *opt)
- struct net_device *dev = qdisc_dev(sch);
- int err;
-
-+ net_inc_ingress_queue();
-+ net_inc_egress_queue();
-+
- mini_qdisc_pair_init(&q->miniqp_ingress, sch, &dev->miniq_ingress);
-
- q->ingress_block_info.binder_type = TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS;
-@@ -192,9 +196,6 @@ static int clsact_init(struct Qdisc *sch, struct nlattr *opt)
- if (err)
- return err;
-
-- net_inc_ingress_queue();
-- net_inc_egress_queue();
--
- sch->flags |= TCQ_F_CPUSTATS;
-
- return 0;
---
-2.15.0
-
diff --git a/queue/phylink-ensure-AN-is-enabled.patch b/queue/phylink-ensure-AN-is-enabled.patch
deleted file mode 100644
index f2ff8d1..0000000
--- a/queue/phylink-ensure-AN-is-enabled.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 74ee0e8c1bf9925c59cc8f1c65c29adf6e4cf603 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel@armlinux.org.uk>
-Date: Wed, 20 Dec 2017 23:21:34 +0000
-Subject: [PATCH] phylink: ensure AN is enabled
-
-commit 74ee0e8c1bf9925c59cc8f1c65c29adf6e4cf603 upstream.
-
-Ensure that we mark AN as enabled at boot time, rather than leaving
-it disabled. This is noticable if your SFP module is fiber, and
-it supports faster speeds than 1G with 2.5G support in place.
-
-Fixes: 9525ae83959b ("phylink: add phylink infrastructure")
-Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
-index 8d06a083ac4c..827f3f92560e 100644
---- a/drivers/net/phy/phylink.c
-+++ b/drivers/net/phy/phylink.c
-@@ -526,6 +526,7 @@ struct phylink *phylink_create(struct net_device *ndev, struct device_node *np,
- pl->link_config.pause = MLO_PAUSE_AN;
- pl->link_config.speed = SPEED_UNKNOWN;
- pl->link_config.duplex = DUPLEX_UNKNOWN;
-+ pl->link_config.an_enabled = true;
- pl->ops = ops;
- __set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
-
---
-2.15.0
-
diff --git a/queue/phylink-ensure-the-PHY-interface-mode-is-appropriate.patch b/queue/phylink-ensure-the-PHY-interface-mode-is-appropriate.patch
deleted file mode 100644
index 5afe9b0..0000000
--- a/queue/phylink-ensure-the-PHY-interface-mode-is-appropriate.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 182088aa3c6c7f7c20a2c1dcc9ded4a3fc631f38 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel@armlinux.org.uk>
-Date: Wed, 20 Dec 2017 23:21:28 +0000
-Subject: [PATCH] phylink: ensure the PHY interface mode is appropriately set
-
-commit 182088aa3c6c7f7c20a2c1dcc9ded4a3fc631f38 upstream.
-
-When setting the ethtool settings, ensure that the validated PHY
-interface mode is propagated to the current link settings, so that
-2500BaseX can be selected.
-
-Fixes: 9525ae83959b ("phylink: add phylink infrastructure")
-Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
-index 5dc9668dde34..8d06a083ac4c 100644
---- a/drivers/net/phy/phylink.c
-+++ b/drivers/net/phy/phylink.c
-@@ -951,6 +951,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
- mutex_lock(&pl->state_mutex);
- /* Configure the MAC to match the new settings */
- linkmode_copy(pl->link_config.advertising, our_kset.link_modes.advertising);
-+ pl->link_config.interface = config.interface;
- pl->link_config.speed = our_kset.base.speed;
- pl->link_config.duplex = our_kset.base.duplex;
- pl->link_config.an_enabled = our_kset.base.autoneg != AUTONEG_DISABLE;
---
-2.15.0
-
diff --git a/queue/series b/queue/series
index 49b13cd..d231c3f 100644
--- a/queue/series
+++ b/queue/series
@@ -9,18 +9,13 @@ ASoC-fsl_ssi-AC-97-ops-need-regmap-clock-and-cleanin.patch
ASoC-twl4030-fix-child-node-lookup.patch
ASoC-tlv320aic31xx-Fix-GPIO1-register-definition.patch
gpio-fix-gpio-line-names-property-retrieval.patch
-IB-hfi-Only-read-capability-registers-if-the-capabil.patch
IB-mlx5-Serialize-access-to-the-VMA-list.patch
IB-uverbs-Fix-command-checking-as-part-of-ib_uverbs_.patch
-IB-core-Verify-that-QP-is-security-enabled-in-create.patch
ALSA-hda-Drop-useless-WARN_ON.patch
ALSA-hda-Add-MIC_NO_PRESENCE-fixup-for-2-HP-machines.patch
ALSA-hda-change-the-location-for-one-mic-on-a-Lenovo.patch
ALSA-hda-fix-headset-mic-detection-issue-on-a-Dell-m.patch
ALSA-hda-Fix-missing-COEF-init-for-ALC225-295-299.patch
-cpufreq-schedutil-Use-idle_calls-counter-of-the-remo.patch
-block-fix-blk_rq_append_bio.patch
-block-don-t-let-passthrough-IO-go-into-.make_request.patch
kbuild-add-fno-stack-check-to-kernel-build-options.patch
ipv4-igmp-guard-against-silly-MTU-values.patch
ipv6-mcast-better-catch-silly-mtu-values.patch
@@ -63,24 +58,11 @@ tipc-fix-hanging-poll-for-stream-sockets.patch
mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch
tcp-fix-potential-underestimation-on-rcv_rtt.patch
net-phy-marvell-Limit-88m1101-autoneg-errata-to-88E1.patch
-ipv6-Honor-specified-parameters-in-fibmatch-lookup.patch
-net-mlx5-FPGA-return-EINVAL-if-size-is-zero.patch
-vxlan-restore-dev-mtu-setting-based-on-lower-device.patch
-net-sched-fix-static-key-imbalance-in-case-of-ingres.patch
bnxt_en-Fix-sources-of-spurious-netpoll-warnings.patch
-phylink-ensure-the-PHY-interface-mode-is-appropriate.patch
-phylink-ensure-AN-is-enabled.patch
-ipv4-fib-Fix-metrics-match-when-deleting-a-route.patch
-ipv6-set-all.accept_dad-to-0-by-default.patch
-Revert-mlx5-move-affinity-hints-assignments-to-gener.patch
-skbuff-orphan-frags-before-zerocopy-clone.patch
-skbuff-skb_copy_ubufs-must-release-uarg-even-without.patch
-sparc64-repair-calling-incorrect-hweight-function-fr.patch
usbip-fix-usbip-bind-writing-random-string-after-com.patch
usbip-prevent-leaking-socket-pointer-address-in-mess.patch
usbip-stub-stop-printing-kernel-pointer-addresses-in.patch
usbip-vhci-stop-printing-kernel-pointer-addresses-in.patch
-USB-chipidea-msm-fix-ulpi-node-lookup.patch
USB-serial-ftdi_sio-add-id-for-Airbus-DS-P8GR.patch
USB-serial-qcserial-add-Sierra-Wireless-EM7565.patch
USB-serial-option-add-support-for-Telit-ME910-PID-0x.patch
@@ -95,7 +77,6 @@ binder-fix-proc-files-use-after-free.patch
phy-tegra-fix-device-tree-node-lookups.patch
drivers-base-cacheinfo-fix-cache-type-for-non-archit.patch
staging-android-ion-Fix-dma-direction-for-dma_sync_s.patch
-x86-32-Fix-kexec-with-stack-canary-CONFIG_CC_STACKPR.patch
n_tty-fix-EXTPROC-vs-ICANON-interaction-with-TIOCINQ.patch
tty-fix-tty_ldisc_receive_buf-documentation.patch
KVM-arm64-Store-vcpu-on-the-stack-during-__guest_ent.patch
diff --git a/queue/skbuff-orphan-frags-before-zerocopy-clone.patch b/queue/skbuff-orphan-frags-before-zerocopy-clone.patch
deleted file mode 100644
index 5d2608f..0000000
--- a/queue/skbuff-orphan-frags-before-zerocopy-clone.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 268b790679422a89e9ab0685d9f291edae780c98 Mon Sep 17 00:00:00 2001
-From: Willem de Bruijn <willemb@google.com>
-Date: Wed, 20 Dec 2017 17:37:49 -0500
-Subject: [PATCH] skbuff: orphan frags before zerocopy clone
-
-commit 268b790679422a89e9ab0685d9f291edae780c98 upstream.
-
-Call skb_zerocopy_clone after skb_orphan_frags, to avoid duplicate
-calls to skb_uarg(skb)->callback for the same data.
-
-skb_zerocopy_clone associates skb_shinfo(skb)->uarg from frag_skb
-with each segment. This is only safe for uargs that do refcounting,
-which is those that pass skb_orphan_frags without dropping their
-shared frags. For others, skb_orphan_frags drops the user frags and
-sets the uarg to NULL, after which sock_zerocopy_clone has no effect.
-
-Qemu hangs were reported due to duplicate vhost_net_zerocopy_callback
-calls for the same data causing the vhost_net_ubuf_ref_>refcount to
-drop below zero.
-
-Link: http://lkml.kernel.org/r/<CAF=yD-LWyCD4Y0aJ9O0e_CHLR+3JOeKicRRTEVCPxgw4XOcqGQ@mail.gmail.com>
-Fixes: 1f8b977ab32d ("sock: enable MSG_ZEROCOPY")
-Reported-by: Andreas Hartmann <andihartmann@01019freenet.de>
-Reported-by: David Hill <dhill@redhat.com>
-Signed-off-by: Willem de Bruijn <willemb@google.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index a592ca025fc4..edf40ac0cd07 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -3654,8 +3654,6 @@ normal:
-
- skb_shinfo(nskb)->tx_flags |= skb_shinfo(head_skb)->tx_flags &
- SKBTX_SHARED_FRAG;
-- if (skb_zerocopy_clone(nskb, head_skb, GFP_ATOMIC))
-- goto err;
-
- while (pos < offset + len) {
- if (i >= nfrags) {
-@@ -3681,6 +3679,8 @@ normal:
-
- if (unlikely(skb_orphan_frags(frag_skb, GFP_ATOMIC)))
- goto err;
-+ if (skb_zerocopy_clone(nskb, frag_skb, GFP_ATOMIC))
-+ goto err;
-
- *nskb_frag = *frag;
- __skb_frag_ref(nskb_frag);
---
-2.15.0
-
diff --git a/queue/skbuff-skb_copy_ubufs-must-release-uarg-even-without.patch b/queue/skbuff-skb_copy_ubufs-must-release-uarg-even-without.patch
deleted file mode 100644
index 5a0ddb4..0000000
--- a/queue/skbuff-skb_copy_ubufs-must-release-uarg-even-without.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From b90ddd568792bcb0054eaf0f61785c8f80c3bd1c Mon Sep 17 00:00:00 2001
-From: Willem de Bruijn <willemb@google.com>
-Date: Wed, 20 Dec 2017 17:37:50 -0500
-Subject: [PATCH] skbuff: skb_copy_ubufs must release uarg even without user
- frags
-
-commit b90ddd568792bcb0054eaf0f61785c8f80c3bd1c upstream.
-
-skb_copy_ubufs creates a private copy of frags[] to release its hold
-on user frags, then calls uarg->callback to notify the owner.
-
-Call uarg->callback even when no frags exist. This edge case can
-happen when zerocopy_sg_from_iter finds enough room in skb_headlen
-to copy all the data.
-
-Fixes: 3ece782693c4 ("sock: skb_copy_ubufs support for compound pages")
-Signed-off-by: Willem de Bruijn <willemb@google.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index edf40ac0cd07..a3cb0be4c6f3 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -1178,7 +1178,7 @@ int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)
- u32 d_off;
-
- if (!num_frags)
-- return 0;
-+ goto release;
-
- if (skb_shared(skb) || skb_unclone(skb, gfp_mask))
- return -EINVAL;
-@@ -1238,6 +1238,7 @@ int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)
- __skb_fill_page_desc(skb, new_frags - 1, head, 0, d_off);
- skb_shinfo(skb)->nr_frags = new_frags;
-
-+release:
- skb_zcopy_clear(skb, false);
- return 0;
- }
---
-2.15.0
-
diff --git a/queue/sparc64-repair-calling-incorrect-hweight-function-fr.patch b/queue/sparc64-repair-calling-incorrect-hweight-function-fr.patch
deleted file mode 100644
index 29ce9f3..0000000
--- a/queue/sparc64-repair-calling-incorrect-hweight-function-fr.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 59585b4be9ae4dc6506551709bdcd6f5210b8a01 Mon Sep 17 00:00:00 2001
-From: Jan Engelhardt <jengelh@inai.de>
-Date: Mon, 25 Dec 2017 03:43:53 +0100
-Subject: [PATCH] sparc64: repair calling incorrect hweight function from stubs
-
-commit 59585b4be9ae4dc6506551709bdcd6f5210b8a01 upstream.
-
-Commit v4.12-rc4-1-g9289ea7f952b introduced a mistake that made the
-64-bit hweight stub call the 16-bit hweight function.
-
-Fixes: 9289ea7f952b ("sparc64: Use indirect calls in hamming weight stubs")
-Signed-off-by: Jan Engelhardt <jengelh@inai.de>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/arch/sparc/lib/hweight.S b/arch/sparc/lib/hweight.S
-index e5547b22cd18..0ddbbb031822 100644
---- a/arch/sparc/lib/hweight.S
-+++ b/arch/sparc/lib/hweight.S
-@@ -44,8 +44,8 @@ EXPORT_SYMBOL(__arch_hweight32)
- .previous
-
- ENTRY(__arch_hweight64)
-- sethi %hi(__sw_hweight16), %g1
-- jmpl %g1 + %lo(__sw_hweight16), %g0
-+ sethi %hi(__sw_hweight64), %g1
-+ jmpl %g1 + %lo(__sw_hweight64), %g0
- nop
- ENDPROC(__arch_hweight64)
- EXPORT_SYMBOL(__arch_hweight64)
---
-2.15.0
-
diff --git a/queue/vxlan-restore-dev-mtu-setting-based-on-lower-device.patch b/queue/vxlan-restore-dev-mtu-setting-based-on-lower-device.patch
deleted file mode 100644
index 37ba610..0000000
--- a/queue/vxlan-restore-dev-mtu-setting-based-on-lower-device.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From f870c1ff65a6d1f3a083f277280802ee09a5b44d Mon Sep 17 00:00:00 2001
-From: Alexey Kodanev <alexey.kodanev@oracle.com>
-Date: Thu, 14 Dec 2017 20:20:00 +0300
-Subject: [PATCH] vxlan: restore dev->mtu setting based on lower device
-
-commit f870c1ff65a6d1f3a083f277280802ee09a5b44d upstream.
-
-Stefano Brivio says:
- Commit a985343ba906 ("vxlan: refactor verification and
- application of configuration") introduced a change in the
- behaviour of initial MTU setting: earlier, the MTU for a link
- created on top of a given lower device, without an initial MTU
- specification, was set to the MTU of the lower device minus
- headroom as a result of this path in vxlan_dev_configure():
-
- if (!conf->mtu)
- dev->mtu = lowerdev->mtu -
- (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM);
-
- which is now gone. Now, the initial MTU, in absence of a
- configured value, is simply set by ether_setup() to ETH_DATA_LEN
- (1500 bytes).
-
- This breaks userspace expectations in case the MTU of
- the lower device is higher than 1500 bytes minus headroom.
-
-This patch restores the previous behaviour on newlink operation. Since
-max_mtu can be negative and we update dev->mtu directly, also check it
-for valid minimum.
-
-Reported-by: Junhan Yan <juyan@redhat.com>
-Fixes: a985343ba906 ("vxlan: refactor verification and application of configuration")
-Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
-Acked-by: Stefano Brivio <sbrivio@redhat.com>
-Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-
-diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
-index 19b9cc51079e..1000b0e4ee01 100644
---- a/drivers/net/vxlan.c
-+++ b/drivers/net/vxlan.c
-@@ -3103,6 +3103,11 @@ static void vxlan_config_apply(struct net_device *dev,
-
- max_mtu = lowerdev->mtu - (use_ipv6 ? VXLAN6_HEADROOM :
- VXLAN_HEADROOM);
-+ if (max_mtu < ETH_MIN_MTU)
-+ max_mtu = ETH_MIN_MTU;
-+
-+ if (!changelink && !conf->mtu)
-+ dev->mtu = max_mtu;
- }
-
- if (dev->mtu > max_mtu)
---
-2.15.0
-
diff --git a/queue/x86-32-Fix-kexec-with-stack-canary-CONFIG_CC_STACKPR.patch b/queue/x86-32-Fix-kexec-with-stack-canary-CONFIG_CC_STACKPR.patch
deleted file mode 100644
index a9916c6..0000000
--- a/queue/x86-32-Fix-kexec-with-stack-canary-CONFIG_CC_STACKPR.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From ac461122c88a10b7d775de2f56467f097c9e627a Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Wed, 27 Dec 2017 11:48:50 -0800
-Subject: [PATCH] x86-32: Fix kexec with stack canary
- (CONFIG_CC_STACKPROTECTOR)
-
-commit ac461122c88a10b7d775de2f56467f097c9e627a upstream.
-
-Commit e802a51ede91 ("x86/idt: Consolidate IDT invalidation") cleaned up
-and unified the IDT invalidation that existed in a couple of places. It
-changed no actual real code.
-
-Despite not changing any actual real code, it _did_ change code generation:
-by implementing the common idt_invalidate() function in
-archx86/kernel/idt.c, it made the use of the function in
-arch/x86/kernel/machine_kexec_32.c be a real function call rather than an
-(accidental) inlining of the function.
-
-That, in turn, exposed two issues:
-
- - in load_segments(), we had incorrectly reset all the segment
- registers, which then made the stack canary load (which gcc does
- using offset of %gs) cause a trap. Instead of %gs pointing to the
- stack canary, it will be the normal zero-based kernel segment, and
- the stack canary load will take a page fault at address 0x14.
-
- - to make this even harder to debug, we had invalidated the GDT just
- before calling idt_invalidate(), which meant that the fault happened
- with an invalid GDT, which in turn causes a triple fault and
- immediate reboot.
-
-Fix this by
-
- (a) not reloading the special segments in load_segments(). We currently
- don't do any percpu accesses (which would require %fs on x86-32) in
- this area, but there's no reason to think that we might not want to
- do them, and like %gs, it's pointless to break it.
-
- (b) doing idt_invalidate() before invalidating the GDT, to keep things
- at least _slightly_ more debuggable for a bit longer. Without a
- IDT, traps will not work. Without a GDT, traps also will not work,
- but neither will any segment loads etc. So in a very real sense,
- the GDT is even more core than the IDT.
-
-Fixes: e802a51ede91 ("x86/idt: Consolidate IDT invalidation")
-Reported-and-tested-by: Alexandru Chirvasitu <achirvasub@gmail.com>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Cc: Denys Vlasenko <dvlasenk@redhat.com>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Brian Gerst <brgerst@gmail.com>
-Cc: Steven Rostedt <rostedt@goodmis.org>
-Cc: Borislav Petkov <bp@alien8.de>
-Cc: Andy Lutomirski <luto@kernel.org>
-Cc: Josh Poimboeuf <jpoimboe@redhat.com>
-Cc: stable@vger.kernel.org
-Link: https://lkml.kernel.org/r/alpine.LFD.2.21.1712271143180.8572@i7.lan
-
-diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
-index 00bc751c861c..edfede768688 100644
---- a/arch/x86/kernel/machine_kexec_32.c
-+++ b/arch/x86/kernel/machine_kexec_32.c
-@@ -48,8 +48,6 @@ static void load_segments(void)
- "\tmovl $"STR(__KERNEL_DS)",%%eax\n"
- "\tmovl %%eax,%%ds\n"
- "\tmovl %%eax,%%es\n"
-- "\tmovl %%eax,%%fs\n"
-- "\tmovl %%eax,%%gs\n"
- "\tmovl %%eax,%%ss\n"
- : : : "eax", "memory");
- #undef STR
-@@ -232,8 +230,8 @@ void machine_kexec(struct kimage *image)
- * The gdt & idt are now invalid.
- * If you want to load them you must set up your own idt & gdt.
- */
-- set_gdt(phys_to_virt(0), 0);
- idt_invalidate(phys_to_virt(0));
-+ set_gdt(phys_to_virt(0), 0);
-
- /* now call it */
- image->start = relocate_kernel_ptr((unsigned long)image->head,
---
-2.15.0
-