Home Home > GIT Browse > linux-next
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2019-12-13 07:07:25 +0100
committerKernel Build Daemon <kbuild@suse.de>2019-12-13 07:07:25 +0100
commit1b873ffba19383dd80193c5266683b51d16841c5 (patch)
treeb05a15cff1febd781b307ef4008e1ce1e36142b7
parentd08ead094dc36eb67263e50a602c0a1406bed4df (diff)
parentd8e88a10ab1299b05cb1288c0ce80a4410105ba6 (diff)
Merge branch 'SLE12-SP4' into SLE12-SP4-AZURErpm-4.12.14-6.34--sle12-sp4-updatesrpm-4.12.14-6.34
-rw-r--r--patches.suse/0001-media-ov6650-Fix-control-handler-not-freed-on-init-e.patch37
-rw-r--r--patches.suse/0001-media-uvcvideo-Fix-error-path-in-control-parsing-fai.patch67
-rw-r--r--patches.suse/ibmvnic-Bound-waits-for-device-queries.patch222
-rw-r--r--patches.suse/ibmvnic-Fix-completion-structure-initialization-again.patch109
-rw-r--r--patches.suse/ibmvnic-Fix-typo-in-retry-check.patch33
-rw-r--r--patches.suse/ibmvnic-Serialize-device-queries.patch245
-rw-r--r--patches.suse/ibmvnic-Terminate-waiting-device-threads-after-loss-.patch43
-rw-r--r--patches.suse/powerpc-pseries-mobility-notify-network-peers-after-.patch67
-rw-r--r--patches.suse/wimax-i2400-Fix-memory-leak-in-i2400m_op_rfkill_sw_t.patch44
-rw-r--r--patches.suse/wimax-i2400-fix-memory-leak.patch34
-rw-r--r--series.conf10
11 files changed, 911 insertions, 0 deletions
diff --git a/patches.suse/0001-media-ov6650-Fix-control-handler-not-freed-on-init-e.patch b/patches.suse/0001-media-ov6650-Fix-control-handler-not-freed-on-init-e.patch
new file mode 100644
index 0000000000..64d1ccf81d
--- /dev/null
+++ b/patches.suse/0001-media-ov6650-Fix-control-handler-not-freed-on-init-e.patch
@@ -0,0 +1,37 @@
+From c404af950d14b71bfbf574a752b6c29d726baaba Mon Sep 17 00:00:00 2001
+From: Janusz Krzysztofik <jmkrzyszt@gmail.com>
+Date: Tue, 3 Sep 2019 17:11:37 -0300
+Subject: [PATCH] media: ov6650: Fix control handler not freed on init error
+Git-commit: c404af950d14b71bfbf574a752b6c29d726baaba
+Patch-mainline: v5.5-rc1
+References: git-fixes
+
+Since commit afd9690c72c3 ("[media] ov6650: convert to the control
+framework"), if an error occurs during initialization of a control
+handler, resources possibly allocated to the handler are not freed
+before device initialiaton is aborted. Fix it.
+
+Fixes: afd9690c72c3 ("[media] ov6650: convert to the control framework")
+Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
+Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
+Signed-off-by: Oliver Neukum <oneukum@suse.com>
+---
+ drivers/media/i2c/soc_camera/ov6650.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/i2c/soc_camera/ov6650.c
++++ b/drivers/media/i2c/soc_camera/ov6650.c
+@@ -1031,8 +1031,10 @@ static int ov6650_probe(struct i2c_clien
+ V4L2_CID_GAMMA, 0, 0xff, 1, 0x12);
+
+ priv->subdev.ctrl_handler = &priv->hdl;
+- if (priv->hdl.error)
+- return priv->hdl.error;
++ if (priv->hdl.error) {
++ ret = priv->hdl.error;
++ goto ectlhdlfree;
++ }
+
+ v4l2_ctrl_auto_cluster(2, &priv->autogain, 0, true);
+ v4l2_ctrl_auto_cluster(3, &priv->autowb, 0, true);
diff --git a/patches.suse/0001-media-uvcvideo-Fix-error-path-in-control-parsing-fai.patch b/patches.suse/0001-media-uvcvideo-Fix-error-path-in-control-parsing-fai.patch
new file mode 100644
index 0000000000..791d1c6b09
--- /dev/null
+++ b/patches.suse/0001-media-uvcvideo-Fix-error-path-in-control-parsing-fai.patch
@@ -0,0 +1,67 @@
+From 8c279e9394cade640ed86ec6c6645a0e7df5e0b6 Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Mon, 29 Jul 2019 23:14:55 -0300
+Subject: [PATCH] media: uvcvideo: Fix error path in control parsing failure
+Git-commit: 8c279e9394cade640ed86ec6c6645a0e7df5e0b6
+References: git-fixes
+Patch-mainline: v5.5-rc1
+
+When parsing the UVC control descriptors fails, the error path tries to
+cleanup a media device that hasn't been initialised, potentially
+resulting in a crash. Fix this by initialising the media device before
+the error handling path can be reached.
+
+Fixes: 5a254d751e52 ("[media] uvcvideo: Register a v4l2_device")
+Reported-by: syzbot+c86454eb3af9e8a4da20@syzkaller.appspotmail.com
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
+Signed-off-by: Oliver Neukum <oneukum@suse.com>
+---
+ drivers/media/usb/uvc/uvc_driver.c | 29 +++++++++++++++--------------
+ 1 file changed, 15 insertions(+), 14 deletions(-)
+
+--- a/drivers/media/usb/uvc/uvc_driver.c
++++ b/drivers/media/usb/uvc/uvc_driver.c
+@@ -2056,6 +2056,20 @@ static int uvc_probe(struct usb_interfac
+ le16_to_cpu(udev->descriptor.idVendor),
+ le16_to_cpu(udev->descriptor.idProduct));
+
++ /* Initialize the media device. */
++#ifdef CONFIG_MEDIA_CONTROLLER
++ dev->mdev.dev = &intf->dev;
++ strscpy(dev->mdev.model, dev->name, sizeof(dev->mdev.model));
++ if (udev->serial)
++ strscpy(dev->mdev.serial, udev->serial,
++ sizeof(dev->mdev.serial));
++ usb_make_path(udev, dev->mdev.bus_info, sizeof(dev->mdev.bus_info));
++ dev->mdev.hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
++ media_device_init(&dev->mdev);
++
++ dev->vdev.mdev = &dev->mdev;
++#endif
++
+ /* Parse the Video Class control descriptor. */
+ if (uvc_parse_control(dev) < 0) {
+ uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "
+@@ -2076,20 +2090,7 @@ static int uvc_probe(struct usb_interfac
+ "linux-uvc-devel mailing list.\n");
+ }
+
+- /* Initialize the media device and register the V4L2 device. */
+-#ifdef CONFIG_MEDIA_CONTROLLER
+- dev->mdev.dev = &intf->dev;
+- strlcpy(dev->mdev.model, dev->name, sizeof(dev->mdev.model));
+- if (udev->serial)
+- strlcpy(dev->mdev.serial, udev->serial,
+- sizeof(dev->mdev.serial));
+- strscpy(dev->mdev.bus_info, udev->devpath, sizeof(dev->mdev.bus_info));
+- dev->mdev.hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
+- dev->mdev.driver_version = LINUX_VERSION_CODE;
+- media_device_init(&dev->mdev);
+-
+- dev->vdev.mdev = &dev->mdev;
+-#endif
++ /* Register the V4L2 device. */
+ if (v4l2_device_register(&intf->dev, &dev->vdev) < 0)
+ goto error;
+
diff --git a/patches.suse/ibmvnic-Bound-waits-for-device-queries.patch b/patches.suse/ibmvnic-Bound-waits-for-device-queries.patch
new file mode 100644
index 0000000000..c614de1588
--- /dev/null
+++ b/patches.suse/ibmvnic-Bound-waits-for-device-queries.patch
@@ -0,0 +1,222 @@
+From 476d96ca9cc59ad07dc452184880b635e4e29b06 Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Mon, 25 Nov 2019 17:12:55 -0600
+Subject: [PATCH] ibmvnic: Bound waits for device queries
+
+References: bsc#1155689 ltc#182047
+Patch-mainline: v5.5-rc1
+Git-commit: 476d96ca9cc59ad07dc452184880b635e4e29b06
+
+Create a wrapper for wait_for_completion calls with additional
+driver checks to ensure that the driver does not wait on a
+disabled device. In those cases or if the device does not respond
+in an extended amount of time, this will allow the driver an
+opportunity to recover.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 112 +++++++++++++++++++++++++----
+ 1 file changed, 97 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index dc1b88116330..4ff6a515c061 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -159,6 +159,40 @@ static long h_reg_sub_crq(unsigned long unit_address, unsigned long token,
+ return rc;
+ }
+
++/**
++ * ibmvnic_wait_for_completion - Check device state and wait for completion
++ * @adapter: private device data
++ * @comp_done: completion structure to wait for
++ * @timeout: time to wait in milliseconds
++ *
++ * Wait for a completion signal or until the timeout limit is reached
++ * while checking that the device is still active.
++ */
++static int ibmvnic_wait_for_completion(struct ibmvnic_adapter *adapter,
++ struct completion *comp_done,
++ unsigned long timeout)
++{
++ struct net_device *netdev;
++ unsigned long div_timeout;
++ u8 retry;
++
++ netdev = adapter->netdev;
++ retry = 5;
++ div_timeout = msecs_to_jiffies(timeout / retry);
++ while (true) {
++ if (!adapter->crq.active) {
++ netdev_err(netdev, "Device down!\n");
++ return -ENODEV;
++ }
++ if (retry--)
++ break;
++ if (wait_for_completion_timeout(comp_done, div_timeout))
++ return 0;
++ }
++ netdev_err(netdev, "Operation timed out.\n");
++ return -ETIMEDOUT;
++}
++
+ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
+ struct ibmvnic_long_term_buff *ltb, int size)
+ {
+@@ -183,7 +217,15 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
+ dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
+ return rc;
+ }
+- wait_for_completion(&adapter->fw_done);
++
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
++ if (rc) {
++ dev_err(dev,
++ "Long term map request aborted or timed out,rc = %d\n",
++ rc);
++ dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
++ return rc;
++ }
+
+ if (adapter->fw_done_rc) {
+ dev_err(dev, "Couldn't map long term buffer,rc = %d\n",
+@@ -211,6 +253,7 @@ static void free_long_term_buff(struct ibmvnic_adapter *adapter,
+ static int reset_long_term_buff(struct ibmvnic_adapter *adapter,
+ struct ibmvnic_long_term_buff *ltb)
+ {
++ struct device *dev = &adapter->vdev->dev;
+ int rc;
+
+ memset(ltb->buff, 0, ltb->size);
+@@ -219,10 +262,16 @@ static int reset_long_term_buff(struct ibmvnic_adapter *adapter,
+ rc = send_request_map(adapter, ltb->addr, ltb->size, ltb->map_id);
+ if (rc)
+ return rc;
+- wait_for_completion(&adapter->fw_done);
++
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
++ if (rc) {
++ dev_info(dev,
++ "Reset failed, long term map request timed out or aborted\n");
++ return rc;
++ }
+
+ if (adapter->fw_done_rc) {
+- dev_info(&adapter->vdev->dev,
++ dev_info(dev,
+ "Reset failed, attempting to free and reallocate buffer\n");
+ free_long_term_buff(adapter, ltb);
+ return alloc_long_term_buff(adapter, ltb, ltb->size);
+@@ -949,7 +998,12 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc)
+ return rc;
+- wait_for_completion(&adapter->fw_done);
++
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
++ if (rc) {
++ dev_err(dev, "Could not retrieve VPD size, rc = %d\n", rc);
++ return rc;
++ }
+
+ if (!adapter->vpd->len)
+ return -ENODATA;
+@@ -987,7 +1041,14 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ adapter->vpd->buff = NULL;
+ return rc;
+ }
+- wait_for_completion(&adapter->fw_done);
++
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
++ if (rc) {
++ dev_err(dev, "Unable to retrieve VPD, rc = %d\n", rc);
++ kfree(adapter->vpd->buff);
++ adapter->vpd->buff = NULL;
++ return rc;
++ }
+
+ return 0;
+ }
+@@ -1696,9 +1757,9 @@ static int __ibmvnic_set_mac(struct net_device *netdev, u8 *dev_addr)
+ goto err;
+ }
+
+- wait_for_completion(&adapter->fw_done);
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
+ /* netdev->dev_addr is changed in handle_change_mac_rsp function */
+- if (adapter->fw_done_rc) {
++ if (rc || adapter->fw_done_rc) {
+ rc = -EIO;
+ goto err;
+ }
+@@ -2319,9 +2380,16 @@ static int wait_for_reset(struct ibmvnic_adapter *adapter)
+ reinit_completion(&adapter->reset_done);
+ adapter->wait_for_reset = true;
+ rc = ibmvnic_reset(adapter, VNIC_RESET_CHANGE_PARAM);
+- if (rc)
+- return rc;
+- wait_for_completion(&adapter->reset_done);
++
++ if (rc) {
++ ret = rc;
++ goto out;
++ }
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->reset_done, 60000);
++ if (rc) {
++ ret = -ENODEV;
++ goto out;
++ }
+
+ ret = 0;
+ if (adapter->reset_done_rc) {
+@@ -2335,10 +2403,18 @@ static int wait_for_reset(struct ibmvnic_adapter *adapter)
+ reinit_completion(&adapter->reset_done);
+ adapter->wait_for_reset = true;
+ rc = ibmvnic_reset(adapter, VNIC_RESET_CHANGE_PARAM);
+- if (rc)
+- return ret;
+- wait_for_completion(&adapter->reset_done);
++ if (rc) {
++ ret = rc;
++ goto out;
++ }
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->reset_done,
++ 60000);
++ if (rc) {
++ ret = -ENODEV;
++ goto out;
++ }
+ }
++out:
+ adapter->wait_for_reset = false;
+
+ return ret;
+@@ -2607,7 +2683,9 @@ static void ibmvnic_get_ethtool_stats(struct net_device *dev,
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc)
+ return;
+- wait_for_completion(&adapter->stats_done);
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->stats_done, 10000);
++ if (rc)
++ return;
+
+ for (i = 0; i < ARRAY_SIZE(ibmvnic_stats); i++)
+ data[i] = be64_to_cpu(IBMVNIC_GET_STAT(adapter,
+@@ -4412,7 +4490,11 @@ static int send_query_phys_parms(struct ibmvnic_adapter *adapter)
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc)
+ return rc;
+- wait_for_completion(&adapter->fw_done);
++
++ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
++ if (rc)
++ return rc;
++
+ return adapter->fw_done_rc ? -EIO : 0;
+ }
+
+--
+2.23.0
+
diff --git a/patches.suse/ibmvnic-Fix-completion-structure-initialization-again.patch b/patches.suse/ibmvnic-Fix-completion-structure-initialization-again.patch
new file mode 100644
index 0000000000..405b2f1b11
--- /dev/null
+++ b/patches.suse/ibmvnic-Fix-completion-structure-initialization-again.patch
@@ -0,0 +1,109 @@
+From 070eca955c4af1248cb78a216463ff757a5dc511 Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Mon, 25 Nov 2019 17:12:53 -0600
+Subject: [PATCH] ibmvnic: Fix completion structure initialization
+
+References: bsc#1155689 ltc#182047
+Patch-mainline: v5.5-rc1
+Git-commit: 070eca955c4af1248cb78a216463ff757a5dc511
+
+Fix multiple calls to init_completion for device completion
+structures. Instead, initialize them during device probe and
+reinitialize them later as needed.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index 0686ded7ad3a..e1ab2feeae53 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -176,7 +176,7 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
+ ltb->map_id = adapter->map_id;
+ adapter->map_id++;
+
+- init_completion(&adapter->fw_done);
++ reinit_completion(&adapter->fw_done);
+ rc = send_request_map(adapter, ltb->addr,
+ ltb->size, ltb->map_id);
+ if (rc) {
+@@ -215,7 +215,7 @@ static int reset_long_term_buff(struct ibmvnic_adapter *adapter,
+
+ memset(ltb->buff, 0, ltb->size);
+
+- init_completion(&adapter->fw_done);
++ reinit_completion(&adapter->fw_done);
+ rc = send_request_map(adapter, ltb->addr, ltb->size, ltb->map_id);
+ if (rc)
+ return rc;
+@@ -943,7 +943,7 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ if (adapter->vpd->buff)
+ len = adapter->vpd->len;
+
+- init_completion(&adapter->fw_done);
++ reinit_completion(&adapter->fw_done);
+ crq.get_vpd_size.first = IBMVNIC_CRQ_CMD;
+ crq.get_vpd_size.cmd = GET_VPD_SIZE;
+ rc = ibmvnic_send_crq(adapter, &crq);
+@@ -1689,7 +1689,7 @@ static int __ibmvnic_set_mac(struct net_device *netdev, u8 *dev_addr)
+ crq.change_mac_addr.cmd = CHANGE_MAC_ADDR;
+ ether_addr_copy(&crq.change_mac_addr.mac_addr[0], dev_addr);
+
+- init_completion(&adapter->fw_done);
++ reinit_completion(&adapter->fw_done);
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc) {
+ rc = -EIO;
+@@ -2316,7 +2316,7 @@ static int wait_for_reset(struct ibmvnic_adapter *adapter)
+ adapter->fallback.rx_entries = adapter->req_rx_add_entries_per_subcrq;
+ adapter->fallback.tx_entries = adapter->req_tx_entries_per_subcrq;
+
+- init_completion(&adapter->reset_done);
++ reinit_completion(&adapter->reset_done);
+ adapter->wait_for_reset = true;
+ rc = ibmvnic_reset(adapter, VNIC_RESET_CHANGE_PARAM);
+ if (rc)
+@@ -2332,7 +2332,7 @@ static int wait_for_reset(struct ibmvnic_adapter *adapter)
+ adapter->desired.rx_entries = adapter->fallback.rx_entries;
+ adapter->desired.tx_entries = adapter->fallback.tx_entries;
+
+- init_completion(&adapter->reset_done);
++ reinit_completion(&adapter->reset_done);
+ adapter->wait_for_reset = true;
+ rc = ibmvnic_reset(adapter, VNIC_RESET_CHANGE_PARAM);
+ if (rc)
+@@ -2603,7 +2603,7 @@ static void ibmvnic_get_ethtool_stats(struct net_device *dev,
+ cpu_to_be32(sizeof(struct ibmvnic_statistics));
+
+ /* Wait for data to be written */
+- init_completion(&adapter->stats_done);
++ reinit_completion(&adapter->stats_done);
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc)
+ return;
+@@ -4408,7 +4408,7 @@ static int send_query_phys_parms(struct ibmvnic_adapter *adapter)
+ memset(&crq, 0, sizeof(crq));
+ crq.query_phys_parms.first = IBMVNIC_CRQ_CMD;
+ crq.query_phys_parms.cmd = QUERY_PHYS_PARMS;
+- init_completion(&adapter->fw_done);
++ reinit_completion(&adapter->fw_done);
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc)
+ return rc;
+@@ -4960,6 +4960,9 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
+ INIT_LIST_HEAD(&adapter->rwi_list);
+ spin_lock_init(&adapter->rwi_lock);
+ init_completion(&adapter->init_done);
++ init_completion(&adapter->fw_done);
++ init_completion(&adapter->reset_done);
++ init_completion(&adapter->stats_done);
+ clear_bit(0, &adapter->resetting);
+
+ do {
+--
+2.23.0
+
diff --git a/patches.suse/ibmvnic-Fix-typo-in-retry-check.patch b/patches.suse/ibmvnic-Fix-typo-in-retry-check.patch
new file mode 100644
index 0000000000..6634bbab2d
--- /dev/null
+++ b/patches.suse/ibmvnic-Fix-typo-in-retry-check.patch
@@ -0,0 +1,33 @@
+From patchwork Wed Dec 11 15:38:39 2019
+X-Patchwork-Id: 1207723
+Subject: [PATCH net v2] net/ibmvnic: Fix typo in retry check
+Date: Wed, 11 Dec 2019 09:38:39 -0600
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+
+References: bsc#1155689 ltc#182047
+Patch-mainline: submitted http://patchwork.ozlabs.org/patch/1207723/
+
+This conditional is missing a bang, with the intent
+being to break when the retry count reaches zero.
+
+Fixes: 476d96ca9c ("ibmvnic: Bound waits for device queries")
+Suggested-by: Juliet Kim <julietk@linux.vnet.ibm.com>
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index efb0f10..2d84523 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -184,7 +184,7 @@ static int ibmvnic_wait_for_completion(struct ibmvnic_adapter *adapter,
+ netdev_err(netdev, "Device down!\n");
+ return -ENODEV;
+ }
+- if (retry--)
++ if (!retry--)
+ break;
+ if (wait_for_completion_timeout(comp_done, div_timeout))
+ return 0;
diff --git a/patches.suse/ibmvnic-Serialize-device-queries.patch b/patches.suse/ibmvnic-Serialize-device-queries.patch
new file mode 100644
index 0000000000..34ca10978c
--- /dev/null
+++ b/patches.suse/ibmvnic-Serialize-device-queries.patch
@@ -0,0 +1,245 @@
+From ff25dcb9a1492ecbe495de936765c7ff3441b601 Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Mon, 25 Nov 2019 17:12:56 -0600
+Subject: [PATCH] ibmvnic: Serialize device queries
+
+References: bsc#1155689 ltc#182047
+Patch-mainline: v5.5-rc1
+Git-commit: ff25dcb9a1492ecbe495de936765c7ff3441b601
+
+Provide some serialization for device CRQ commands
+and queries to ensure that the shared variable used for
+storing return codes is properly synchronized.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 54 +++++++++++++++++++++++++++---
+ drivers/net/ethernet/ibm/ibmvnic.h | 2 ++
+ 2 files changed, 51 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index 4ff6a515c061..c90080781924 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -210,11 +210,14 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
+ ltb->map_id = adapter->map_id;
+ adapter->map_id++;
+
++ mutex_lock(&adapter->fw_lock);
++ adapter->fw_done_rc = 0;
+ reinit_completion(&adapter->fw_done);
+ rc = send_request_map(adapter, ltb->addr,
+ ltb->size, ltb->map_id);
+ if (rc) {
+ dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
+ }
+
+@@ -224,6 +227,7 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
+ "Long term map request aborted or timed out,rc = %d\n",
+ rc);
+ dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
+ }
+
+@@ -231,8 +235,10 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
+ dev_err(dev, "Couldn't map long term buffer,rc = %d\n",
+ adapter->fw_done_rc);
+ dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
++ mutex_unlock(&adapter->fw_lock);
+ return -1;
+ }
++ mutex_unlock(&adapter->fw_lock);
+ return 0;
+ }
+
+@@ -258,15 +264,21 @@ static int reset_long_term_buff(struct ibmvnic_adapter *adapter,
+
+ memset(ltb->buff, 0, ltb->size);
+
++ mutex_lock(&adapter->fw_lock);
++ adapter->fw_done_rc = 0;
++
+ reinit_completion(&adapter->fw_done);
+ rc = send_request_map(adapter, ltb->addr, ltb->size, ltb->map_id);
+- if (rc)
++ if (rc) {
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
++ }
+
+ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
+ if (rc) {
+ dev_info(dev,
+ "Reset failed, long term map request timed out or aborted\n");
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
+ }
+
+@@ -274,8 +286,10 @@ static int reset_long_term_buff(struct ibmvnic_adapter *adapter,
+ dev_info(dev,
+ "Reset failed, attempting to free and reallocate buffer\n");
+ free_long_term_buff(adapter, ltb);
++ mutex_unlock(&adapter->fw_lock);
+ return alloc_long_term_buff(adapter, ltb, ltb->size);
+ }
++ mutex_unlock(&adapter->fw_lock);
+ return 0;
+ }
+
+@@ -992,18 +1006,25 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ if (adapter->vpd->buff)
+ len = adapter->vpd->len;
+
++ mutex_lock(&adapter->fw_lock);
++ adapter->fw_done_rc = 0;
+ reinit_completion(&adapter->fw_done);
++
+ crq.get_vpd_size.first = IBMVNIC_CRQ_CMD;
+ crq.get_vpd_size.cmd = GET_VPD_SIZE;
+ rc = ibmvnic_send_crq(adapter, &crq);
+- if (rc)
++ if (rc) {
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
++ }
+
+ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
+ if (rc) {
+ dev_err(dev, "Could not retrieve VPD size, rc = %d\n", rc);
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
+ }
++ mutex_unlock(&adapter->fw_lock);
+
+ if (!adapter->vpd->len)
+ return -ENODATA;
+@@ -1030,7 +1051,10 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ return -ENOMEM;
+ }
+
++ mutex_lock(&adapter->fw_lock);
++ adapter->fw_done_rc = 0;
+ reinit_completion(&adapter->fw_done);
++
+ crq.get_vpd.first = IBMVNIC_CRQ_CMD;
+ crq.get_vpd.cmd = GET_VPD;
+ crq.get_vpd.ioba = cpu_to_be32(adapter->vpd->dma_addr);
+@@ -1039,6 +1063,7 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ if (rc) {
+ kfree(adapter->vpd->buff);
+ adapter->vpd->buff = NULL;
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
+ }
+
+@@ -1047,9 +1072,11 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter)
+ dev_err(dev, "Unable to retrieve VPD, rc = %d\n", rc);
+ kfree(adapter->vpd->buff);
+ adapter->vpd->buff = NULL;
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
+ }
+
++ mutex_unlock(&adapter->fw_lock);
+ return 0;
+ }
+
+@@ -1750,10 +1777,14 @@ static int __ibmvnic_set_mac(struct net_device *netdev, u8 *dev_addr)
+ crq.change_mac_addr.cmd = CHANGE_MAC_ADDR;
+ ether_addr_copy(&crq.change_mac_addr.mac_addr[0], dev_addr);
+
++ mutex_lock(&adapter->fw_lock);
++ adapter->fw_done_rc = 0;
+ reinit_completion(&adapter->fw_done);
++
+ rc = ibmvnic_send_crq(adapter, &crq);
+ if (rc) {
+ rc = -EIO;
++ mutex_unlock(&adapter->fw_lock);
+ goto err;
+ }
+
+@@ -1761,9 +1792,10 @@ static int __ibmvnic_set_mac(struct net_device *netdev, u8 *dev_addr)
+ /* netdev->dev_addr is changed in handle_change_mac_rsp function */
+ if (rc || adapter->fw_done_rc) {
+ rc = -EIO;
++ mutex_unlock(&adapter->fw_lock);
+ goto err;
+ }
+-
++ mutex_unlock(&adapter->fw_lock);
+ return 0;
+ err:
+ ether_addr_copy(adapter->mac_addr, netdev->dev_addr);
+@@ -4486,15 +4518,24 @@ static int send_query_phys_parms(struct ibmvnic_adapter *adapter)
+ memset(&crq, 0, sizeof(crq));
+ crq.query_phys_parms.first = IBMVNIC_CRQ_CMD;
+ crq.query_phys_parms.cmd = QUERY_PHYS_PARMS;
++
++ mutex_lock(&adapter->fw_lock);
++ adapter->fw_done_rc = 0;
+ reinit_completion(&adapter->fw_done);
++
+ rc = ibmvnic_send_crq(adapter, &crq);
+- if (rc)
++ if (rc) {
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
++ }
+
+ rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
+- if (rc)
++ if (rc) {
++ mutex_unlock(&adapter->fw_lock);
+ return rc;
++ }
+
++ mutex_unlock(&adapter->fw_lock);
+ return adapter->fw_done_rc ? -EIO : 0;
+ }
+
+@@ -5050,6 +5091,7 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
+ __ibmvnic_delayed_reset);
+ INIT_LIST_HEAD(&adapter->rwi_list);
+ spin_lock_init(&adapter->rwi_lock);
++ mutex_init(&adapter->fw_lock);
+ init_completion(&adapter->init_done);
+ init_completion(&adapter->fw_done);
+ init_completion(&adapter->reset_done);
+@@ -5111,6 +5153,7 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
+ ibmvnic_init_fail:
+ release_sub_crqs(adapter, 1);
+ release_crq_queue(adapter);
++ mutex_destroy(&adapter->fw_lock);
+ free_netdev(netdev);
+
+ return rc;
+@@ -5135,6 +5178,7 @@ static int ibmvnic_remove(struct vio_dev *dev)
+ adapter->state = VNIC_REMOVED;
+
+ rtnl_unlock();
++ mutex_destroy(&adapter->fw_lock);
+ device_remove_file(&dev->dev, &dev_attr_failover);
+ free_netdev(netdev);
+ dev_set_drvdata(&dev->dev, NULL);
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.h b/drivers/net/ethernet/ibm/ibmvnic.h
+index ebc39248b334..60eccaf91b12 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.h
++++ b/drivers/net/ethernet/ibm/ibmvnic.h
+@@ -1026,6 +1026,8 @@ struct ibmvnic_adapter {
+ int init_done_rc;
+
+ struct completion fw_done;
++ /* Used for serialization of device commands */
++ struct mutex fw_lock;
+ int fw_done_rc;
+
+ struct completion reset_done;
+--
+2.23.0
+
diff --git a/patches.suse/ibmvnic-Terminate-waiting-device-threads-after-loss-.patch b/patches.suse/ibmvnic-Terminate-waiting-device-threads-after-loss-.patch
new file mode 100644
index 0000000000..efc8077168
--- /dev/null
+++ b/patches.suse/ibmvnic-Terminate-waiting-device-threads-after-loss-.patch
@@ -0,0 +1,43 @@
+From 2147e3d09e9ba6edc54b1b4bb7d8fc3cca96776b Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Mon, 25 Nov 2019 17:12:54 -0600
+Subject: [PATCH] ibmvnic: Terminate waiting device threads after loss of
+ service
+
+References: bsc#1155689 ltc#182047
+Patch-mainline: v5.5-rc1
+Git-commit: 2147e3d09e9ba6edc54b1b4bb7d8fc3cca96776b
+
+If we receive a notification that the device has been deactivated
+or removed, force a completion of all waiting threads.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index e1ab2feeae53..dc1b88116330 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -4505,6 +4505,15 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
+ case IBMVNIC_CRQ_XPORT_EVENT:
+ netif_carrier_off(netdev);
+ adapter->crq.active = false;
++ /* terminate any thread waiting for a response
++ * from the device
++ */
++ if (!completion_done(&adapter->fw_done)) {
++ adapter->fw_done_rc = -EIO;
++ complete(&adapter->fw_done);
++ }
++ if (!completion_done(&adapter->stats_done))
++ complete(&adapter->stats_done);
+ if (test_bit(0, &adapter->resetting))
+ adapter->force_reset_recovery = true;
+ if (gen_crq->cmd == IBMVNIC_PARTITION_MIGRATED) {
+--
+2.23.0
+
diff --git a/patches.suse/powerpc-pseries-mobility-notify-network-peers-after-.patch b/patches.suse/powerpc-pseries-mobility-notify-network-peers-after-.patch
new file mode 100644
index 0000000000..e129e72447
--- /dev/null
+++ b/patches.suse/powerpc-pseries-mobility-notify-network-peers-after-.patch
@@ -0,0 +1,67 @@
+From 3a8d2b61ba71613daece4650dccaa745e0a3101a Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Tue, 5 Nov 2019 18:06:34 -0600
+Subject: [PATCH] powerpc/pseries/mobility: notify network peers after
+ migration
+
+References: bsc#1152631 ltc#181798
+Patch-mainline: submitted https://patchwork.ozlabs.org/patch/1190589/
+
+After a migration, it is necessary to send a gratuitous ARP
+from all running interfaces so that the rest of the network
+is aware of its new location. However, some supported network
+devices are unaware that they have been migrated. To avoid network
+interruptions and other unwanted behavior, force a GARP on all
+valid, running interfaces as part of the post_mobility_fixup
+routine.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/pseries/mobility.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+--- a/arch/powerpc/platforms/pseries/mobility.c
++++ b/arch/powerpc/platforms/pseries/mobility.c
+@@ -19,6 +19,9 @@
+ #include <linux/device.h>
+ #include <linux/delay.h>
+ #include <linux/slab.h>
++#include <linux/netdevice.h>
++#include <linux/rtnetlink.h>
++#include <net/net_namespace.h>
+
+ #include <asm/machdep.h>
+ #include <asm/rtas.h>
+@@ -333,6 +336,8 @@ void post_mobility_fixup(void)
+ {
+ int rc;
+ int activate_fw_token;
++ struct net_device *netdev;
++ struct net *net;
+
+ activate_fw_token = rtas_token("ibm,activate-firmware");
+ if (activate_fw_token == RTAS_UNKNOWN_SERVICE) {
+@@ -373,6 +378,22 @@ void post_mobility_fixup(void)
+ /* Possibly switch to a new RFI flush type */
+ pseries_setup_rfi_flush();
+
++ /* need to force a gratuitous ARP on running interfaces */
++ rtnl_lock();
++ for_each_net(net) {
++ for_each_netdev(net, netdev) {
++ if (netif_device_present(netdev) &&
++ netif_running(netdev) &&
++ !(netdev->flags & (IFF_NOARP | IFF_LOOPBACK))) {
++ call_netdevice_notifiers(NETDEV_NOTIFY_PEERS,
++ netdev);
++ call_netdevice_notifiers(NETDEV_RESEND_IGMP,
++ netdev);
++ }
++ }
++ }
++ rtnl_unlock();
++
+ return;
+ }
+
diff --git a/patches.suse/wimax-i2400-Fix-memory-leak-in-i2400m_op_rfkill_sw_t.patch b/patches.suse/wimax-i2400-Fix-memory-leak-in-i2400m_op_rfkill_sw_t.patch
new file mode 100644
index 0000000000..425ed26172
--- /dev/null
+++ b/patches.suse/wimax-i2400-Fix-memory-leak-in-i2400m_op_rfkill_sw_t.patch
@@ -0,0 +1,44 @@
+From 6f3ef5c25cc762687a7341c18cbea5af54461407 Mon Sep 17 00:00:00 2001
+From: Navid Emamdoost <navid.emamdoost@gmail.com>
+Date: Fri, 25 Oct 2019 23:53:30 -0500
+Subject: [PATCH] wimax: i2400: Fix memory leak in i2400m_op_rfkill_sw_toggle
+Git-commit: 6f3ef5c25cc762687a7341c18cbea5af54461407
+Patch-mainline: v5.4-rc6
+References: CVE-2019-19051 bsc#1159024
+
+In the implementation of i2400m_op_rfkill_sw_toggle() the allocated
+buffer for cmd should be released before returning. The
+documentation for i2400m_msg_to_dev() says when it returns the buffer
+can be reused. Meaning cmd should be released in either case. Move
+kfree(cmd) before return to be reached by all execution paths.
+
+Fixes: 2507e6ab7a9a ("wimax: i2400: fix memory leak")
+Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/wimax/i2400m/op-rfkill.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/wimax/i2400m/op-rfkill.c b/drivers/net/wimax/i2400m/op-rfkill.c
+index 8efb493ceec2..5c79f052cad2 100644
+--- a/drivers/net/wimax/i2400m/op-rfkill.c
++++ b/drivers/net/wimax/i2400m/op-rfkill.c
+@@ -127,12 +127,12 @@ int i2400m_op_rfkill_sw_toggle(struct wimax_dev *wimax_dev,
+ "%d\n", result);
+ result = 0;
+ error_cmd:
+- kfree(cmd);
+ kfree_skb(ack_skb);
+ error_msg_to_dev:
+ error_alloc:
+ d_fnend(4, dev, "(wimax_dev %p state %d) = %d\n",
+ wimax_dev, state, result);
++ kfree(cmd);
+ return result;
+ }
+
+--
+2.16.4
+
diff --git a/patches.suse/wimax-i2400-fix-memory-leak.patch b/patches.suse/wimax-i2400-fix-memory-leak.patch
new file mode 100644
index 0000000000..0d7b091968
--- /dev/null
+++ b/patches.suse/wimax-i2400-fix-memory-leak.patch
@@ -0,0 +1,34 @@
+From 2507e6ab7a9a440773be476141a255934468c5ef Mon Sep 17 00:00:00 2001
+From: Navid Emamdoost <navid.emamdoost@gmail.com>
+Date: Tue, 10 Sep 2019 18:01:40 -0500
+Subject: [PATCH] wimax: i2400: fix memory leak
+Git-commit: 2507e6ab7a9a440773be476141a255934468c5ef
+Patch-mainline: v5.3
+References: CVE-2019-19051 bsc#1159024
+
+In i2400m_op_rfkill_sw_toggle cmd buffer should be released along with
+skb response.
+
+Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/wimax/i2400m/op-rfkill.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/wimax/i2400m/op-rfkill.c b/drivers/net/wimax/i2400m/op-rfkill.c
+index 6642bcb27761..8efb493ceec2 100644
+--- a/drivers/net/wimax/i2400m/op-rfkill.c
++++ b/drivers/net/wimax/i2400m/op-rfkill.c
+@@ -127,6 +127,7 @@ int i2400m_op_rfkill_sw_toggle(struct wimax_dev *wimax_dev,
+ "%d\n", result);
+ result = 0;
+ error_cmd:
++ kfree(cmd);
+ kfree_skb(ack_skb);
+ error_msg_to_dev:
+ error_alloc:
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index 67431a6184..3408d139a1 100644
--- a/series.conf
+++ b/series.conf
@@ -25269,6 +25269,7 @@
patches.suse/net-ibmvnic-Fix-missing-in-__ibmvnic_reset.patch
patches.suse/bridge-mdb-remove-wrong-use-of-NLM_F_MULTI.patch
patches.suse/sch_hhf-ensure-quantum-and-hhf_non_hh_weight-are-non.patch
+ patches.suse/wimax-i2400-fix-memory-leak.patch
patches.suse/tcp-fix-tcp_ecn_withdraw_cwr-to-clear-TCP_ECN_QUEUE_.patch
patches.suse/ixgbe-Prevent-u8-wrapping-of-ITR-value-to-something-.patch
patches.suse/tun-fix-use-after-free-when-register-netdev-failed.patch
@@ -25814,6 +25815,7 @@
patches.suse/net-fix-sk_page_frag-recursion-from-memory-reclaim.patch
patches.suse/net-ethernet-ftgmac100-Fix-DMA-coherency-issue-with-.patch
patches.suse/fjes-Handle-workqueue-allocation-failure.patch
+ patches.suse/wimax-i2400-Fix-memory-leak-in-i2400m_op_rfkill_sw_t.patch
patches.suse/net-mlx4_core-Dynamically-set-guaranteed-amount-of-c.patch
patches.suse/net-hisilicon-Fix-ping-latency-when-deal-with-high-t.patch
patches.suse/net-smc-fix-refcounting-for-non-blocking-connect
@@ -26018,9 +26020,11 @@
patches.suse/ALSA-usb-audio-Fix-Focusrite-Scarlett-6i6-gen1-input.patch
patches.suse/media-vivid-Set-vid_cap_streaming-and-vid_out_stream.patch
patches.suse/media-vim2m-Fix-abort-issue.patch
+ patches.suse/0001-media-ov6650-Fix-control-handler-not-freed-on-init-e.patch
patches.suse/media-usbvision-Fix-races-among-open-close-and-disco.patch
patches.suse/media-ti-vpe-vpe-Fix-Motion-Vector-vpdma-stride.patch
patches.suse/media-cxusb-detect-cxusb_ctrl_msg-error-in-query.patch
+ patches.suse/0001-media-uvcvideo-Fix-error-path-in-control-parsing-fai.patch
patches.suse/media-usb-fix-memory-leak-in-af9005_identify_state.patch
patches.suse/media-imon-invalid-dereference-in-imon_touch_event.patch
patches.suse/media-bdisp-fix-memleak-on-release.patch
@@ -26082,6 +26086,10 @@
patches.suse/KVM-PPC-Book3S-HV-Flush-link-stack-on-guest-exit-to-.patch
patches.suse/ftrace-introduce-permanent-ftrace_ops-flag.patch
patches.suse/tipc-fix-link-name-length-check.patch
+ patches.suse/ibmvnic-Fix-completion-structure-initialization-again.patch
+ patches.suse/ibmvnic-Terminate-waiting-device-threads-after-loss-.patch
+ patches.suse/ibmvnic-Bound-waits-for-device-queries.patch
+ patches.suse/ibmvnic-Serialize-device-queries.patch
patches.suse/openvswitch-fix-flow-command-message-size.patch
patches.suse/video-hdmi-Fix-AVI-bar-unpack.patch
patches.suse/0003-drm-panel-lvds-Potential-Oops-in-probe-error-handlin.patch
@@ -26184,6 +26192,8 @@
patches.kabi/kabi-move-sysctl_tcp_min_snd_mss-to-preserve-struct-.patch
patches.suse/cifs-handle-netapp-error-codes.patch
patches.suse/powerpc-add-link-stack-flush-mitigation-in-debugfs.patch
+ patches.suse/powerpc-pseries-mobility-notify-network-peers-after-.patch
+ patches.suse/ibmvnic-Fix-typo-in-retry-check.patch
########################################################
# end of sorted patches