From: Greg Kroah-Hartman Date: Sat, 12 Aug 2023 18:50:45 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v4.14.323~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1f66034b15bc1a1bb443f07671bfb4caaa9a272e;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: dmaengine-mcf-edma-fix-a-potential-un-allocated-memory-access.patch ibmvnic-enforce-stronger-sanity-checks-on-login-response.patch ibmvnic-handle-dma-unmapping-of-login-buffs-in-release-functions.patch ibmvnic-unmap-dma-login-rsp-buffer-on-send-login-fail.patch net-hns3-add-wait-until-mac-link-down.patch net-hns3-refactor-hclge_mac_link_status_wait-for-interface-reuse.patch net-mlx5-allow-0-for-total-host-vfs.patch net-phy-at803x-remove-set-get-wol-callbacks-for-ar8032.patch --- diff --git a/queue-5.10/dmaengine-mcf-edma-fix-a-potential-un-allocated-memory-access.patch b/queue-5.10/dmaengine-mcf-edma-fix-a-potential-un-allocated-memory-access.patch new file mode 100644 index 00000000000..1e6d9606058 --- /dev/null +++ b/queue-5.10/dmaengine-mcf-edma-fix-a-potential-un-allocated-memory-access.patch @@ -0,0 +1,61 @@ +From 0a46781c89dece85386885a407244ca26e5c1c44 Mon Sep 17 00:00:00 2001 +From: Christophe JAILLET +Date: Wed, 12 Jul 2023 18:26:45 +0530 +Subject: dmaengine: mcf-edma: Fix a potential un-allocated memory access + +From: Christophe JAILLET + +commit 0a46781c89dece85386885a407244ca26e5c1c44 upstream. + +When 'mcf_edma' is allocated, some space is allocated for a +flexible array at the end of the struct. 'chans' item are allocated, that is +to say 'pdata->dma_channels'. + +Then, this number of item is stored in 'mcf_edma->n_chans'. + +A few lines later, if 'mcf_edma->n_chans' is 0, then a default value of 64 +is set. + +This ends to no space allocated by devm_kzalloc() because chans was 0, but +64 items are read and/or written in some not allocated memory. + +Change the logic to define a default value before allocating the memory. + +Fixes: e7a3ff92eaf1 ("dmaengine: fsl-edma: add ColdFire mcf5441x edma support") +Signed-off-by: Christophe JAILLET +Link: https://lore.kernel.org/r/f55d914407c900828f6fad3ea5fa791a5f17b9a4.1685172449.git.christophe.jaillet@wanadoo.fr +Signed-off-by: Vinod Koul +Signed-off-by: Greg Kroah-Hartman +--- + drivers/dma/mcf-edma.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +--- a/drivers/dma/mcf-edma.c ++++ b/drivers/dma/mcf-edma.c +@@ -191,7 +191,13 @@ static int mcf_edma_probe(struct platfor + return -EINVAL; + } + +- chans = pdata->dma_channels; ++ if (!pdata->dma_channels) { ++ dev_info(&pdev->dev, "setting default channel number to 64"); ++ chans = 64; ++ } else { ++ chans = pdata->dma_channels; ++ } ++ + len = sizeof(*mcf_edma) + sizeof(*mcf_chan) * chans; + mcf_edma = devm_kzalloc(&pdev->dev, len, GFP_KERNEL); + if (!mcf_edma) +@@ -203,11 +209,6 @@ static int mcf_edma_probe(struct platfor + mcf_edma->drvdata = &mcf_data; + mcf_edma->big_endian = 1; + +- if (!mcf_edma->n_chans) { +- dev_info(&pdev->dev, "setting default channel number to 64"); +- mcf_edma->n_chans = 64; +- } +- + mutex_init(&mcf_edma->fsl_edma_mutex); + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); diff --git a/queue-5.10/ibmvnic-enforce-stronger-sanity-checks-on-login-response.patch b/queue-5.10/ibmvnic-enforce-stronger-sanity-checks-on-login-response.patch new file mode 100644 index 00000000000..ffa277d89fc --- /dev/null +++ b/queue-5.10/ibmvnic-enforce-stronger-sanity-checks-on-login-response.patch @@ -0,0 +1,77 @@ +From db17ba719bceb52f0ae4ebca0e4c17d9a3bebf05 Mon Sep 17 00:00:00 2001 +From: Nick Child +Date: Wed, 9 Aug 2023 17:10:34 -0500 +Subject: ibmvnic: Enforce stronger sanity checks on login response + +From: Nick Child + +commit db17ba719bceb52f0ae4ebca0e4c17d9a3bebf05 upstream. + +Ensure that all offsets in a login response buffer are within the size +of the allocated response buffer. Any offsets or lengths that surpass +the allocation are likely the result of an incomplete response buffer. +In these cases, a full reset is necessary. + +When attempting to login, the ibmvnic device will allocate a response +buffer and pass a reference to the VIOS. The VIOS will then send the +ibmvnic device a LOGIN_RSP CRQ to signal that the buffer has been filled +with data. If the ibmvnic device does not get a response in 20 seconds, +the old buffer is freed and a new login request is sent. With 2 +outstanding requests, any LOGIN_RSP CRQ's could be for the older +login request. If this is the case then the login response buffer (which +is for the newer login request) could be incomplete and contain invalid +data. Therefore, we must enforce strict sanity checks on the response +buffer values. + +Testing has shown that the `off_rxadd_buff_size` value is filled in last +by the VIOS and will be the smoking gun for these circumstances. + +Until VIOS can implement a mechanism for tracking outstanding response +buffers and a method for mapping a LOGIN_RSP CRQ to a particular login +response buffer, the best ibmvnic can do in this situation is perform a +full reset. + +Fixes: dff515a3e71d ("ibmvnic: Harden device login requests") +Signed-off-by: Nick Child +Reviewed-by: Simon Horman +Link: https://lore.kernel.org/r/20230809221038.51296-1-nnac123@linux.ibm.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/ibm/ibmvnic.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -4430,6 +4430,7 @@ static int handle_login_rsp(union ibmvni + int num_tx_pools; + int num_rx_pools; + u64 *size_array; ++ u32 rsp_len; + int i; + + /* CHECK: Test/set of login_pending does not need to be atomic +@@ -4481,6 +4482,23 @@ static int handle_login_rsp(union ibmvni + ibmvnic_reset(adapter, VNIC_RESET_FATAL); + return -EIO; + } ++ ++ rsp_len = be32_to_cpu(login_rsp->len); ++ if (be32_to_cpu(login->login_rsp_len) < rsp_len || ++ rsp_len <= be32_to_cpu(login_rsp->off_txsubm_subcrqs) || ++ rsp_len <= be32_to_cpu(login_rsp->off_rxadd_subcrqs) || ++ rsp_len <= be32_to_cpu(login_rsp->off_rxadd_buff_size) || ++ rsp_len <= be32_to_cpu(login_rsp->off_supp_tx_desc)) { ++ /* This can happen if a login request times out and there are ++ * 2 outstanding login requests sent, the LOGIN_RSP crq ++ * could have been for the older login request. So we are ++ * parsing the newer response buffer which may be incomplete ++ */ ++ dev_err(dev, "FATAL: Login rsp offsets/lengths invalid\n"); ++ ibmvnic_reset(adapter, VNIC_RESET_FATAL); ++ return -EIO; ++ } ++ + size_array = (u64 *)((u8 *)(adapter->login_rsp_buf) + + be32_to_cpu(adapter->login_rsp_buf->off_rxadd_buff_size)); + /* variable buffer sizes are not supported, so just read the diff --git a/queue-5.10/ibmvnic-handle-dma-unmapping-of-login-buffs-in-release-functions.patch b/queue-5.10/ibmvnic-handle-dma-unmapping-of-login-buffs-in-release-functions.patch new file mode 100644 index 00000000000..60585dece2c --- /dev/null +++ b/queue-5.10/ibmvnic-handle-dma-unmapping-of-login-buffs-in-release-functions.patch @@ -0,0 +1,73 @@ +From d78a671eb8996af19d6311ecdee9790d2fa479f0 Mon Sep 17 00:00:00 2001 +From: Nick Child +Date: Wed, 9 Aug 2023 17:10:36 -0500 +Subject: ibmvnic: Handle DMA unmapping of login buffs in release functions + +From: Nick Child + +commit d78a671eb8996af19d6311ecdee9790d2fa479f0 upstream. + +Rather than leaving the DMA unmapping of the login buffers to the +login response handler, move this work into the login release functions. +Previously, these functions were only used for freeing the allocated +buffers. This could lead to issues if there are more than one +outstanding login buffer requests, which is possible if a login request +times out. + +If a login request times out, then there is another call to send login. +The send login function makes a call to the login buffer release +function. In the past, this freed the buffers but did not DMA unmap. +Therefore, the VIOS could still write to the old login (now freed) +buffer. It is for this reason that it is a good idea to leave the DMA +unmap call to the login buffers release function. + +Since the login buffer release functions now handle DMA unmapping, +remove the duplicate DMA unmapping in handle_login_rsp(). + +Fixes: dff515a3e71d ("ibmvnic: Harden device login requests") +Signed-off-by: Nick Child +Reviewed-by: Simon Horman +Link: https://lore.kernel.org/r/20230809221038.51296-3-nnac123@linux.ibm.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/ibm/ibmvnic.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -929,12 +929,22 @@ static int ibmvnic_login(struct net_devi + + static void release_login_buffer(struct ibmvnic_adapter *adapter) + { ++ if (!adapter->login_buf) ++ return; ++ ++ dma_unmap_single(&adapter->vdev->dev, adapter->login_buf_token, ++ adapter->login_buf_sz, DMA_TO_DEVICE); + kfree(adapter->login_buf); + adapter->login_buf = NULL; + } + + static void release_login_rsp_buffer(struct ibmvnic_adapter *adapter) + { ++ if (!adapter->login_rsp_buf) ++ return; ++ ++ dma_unmap_single(&adapter->vdev->dev, adapter->login_rsp_buf_token, ++ adapter->login_rsp_buf_sz, DMA_FROM_DEVICE); + kfree(adapter->login_rsp_buf); + adapter->login_rsp_buf = NULL; + } +@@ -4445,11 +4455,6 @@ static int handle_login_rsp(union ibmvni + } + adapter->login_pending = false; + +- dma_unmap_single(dev, adapter->login_buf_token, adapter->login_buf_sz, +- DMA_TO_DEVICE); +- dma_unmap_single(dev, adapter->login_rsp_buf_token, +- adapter->login_rsp_buf_sz, DMA_FROM_DEVICE); +- + /* If the number of queues requested can't be allocated by the + * server, the login response will return with code 1. We will need + * to resend the login buffer with fewer queues requested. diff --git a/queue-5.10/ibmvnic-unmap-dma-login-rsp-buffer-on-send-login-fail.patch b/queue-5.10/ibmvnic-unmap-dma-login-rsp-buffer-on-send-login-fail.patch new file mode 100644 index 00000000000..e7a23ead4f6 --- /dev/null +++ b/queue-5.10/ibmvnic-unmap-dma-login-rsp-buffer-on-send-login-fail.patch @@ -0,0 +1,41 @@ +From 411c565b4bc63e9584a8493882bd566e35a90588 Mon Sep 17 00:00:00 2001 +From: Nick Child +Date: Wed, 9 Aug 2023 17:10:35 -0500 +Subject: ibmvnic: Unmap DMA login rsp buffer on send login fail + +From: Nick Child + +commit 411c565b4bc63e9584a8493882bd566e35a90588 upstream. + +If the LOGIN CRQ fails to send then we must DMA unmap the response +buffer. Previously, if the CRQ failed then the memory was freed without +DMA unmapping. + +Fixes: c98d9cc4170d ("ibmvnic: send_login should check for crq errors") +Signed-off-by: Nick Child +Reviewed-by: Simon Horman +Link: https://lore.kernel.org/r/20230809221038.51296-2-nnac123@linux.ibm.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/ibm/ibmvnic.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -3861,11 +3861,14 @@ static int send_login(struct ibmvnic_ada + if (rc) { + adapter->login_pending = false; + netdev_err(adapter->netdev, "Failed to send login, rc=%d\n", rc); +- goto buf_rsp_map_failed; ++ goto buf_send_failed; + } + + return 0; + ++buf_send_failed: ++ dma_unmap_single(dev, rsp_buffer_token, rsp_buffer_size, ++ DMA_FROM_DEVICE); + buf_rsp_map_failed: + kfree(login_rsp_buffer); + adapter->login_rsp_buf = NULL; diff --git a/queue-5.10/net-hns3-add-wait-until-mac-link-down.patch b/queue-5.10/net-hns3-add-wait-until-mac-link-down.patch new file mode 100644 index 00000000000..5f70dde6576 --- /dev/null +++ b/queue-5.10/net-hns3-add-wait-until-mac-link-down.patch @@ -0,0 +1,54 @@ +From 6265e242f7b95f2c1195b42ec912b84ad161470e Mon Sep 17 00:00:00 2001 +From: Jie Wang +Date: Mon, 7 Aug 2023 19:34:51 +0800 +Subject: net: hns3: add wait until mac link down + +From: Jie Wang + +commit 6265e242f7b95f2c1195b42ec912b84ad161470e upstream. + +In some configure flow of hns3 driver, for example, change mtu, it will +disable MAC through firmware before configuration. But firmware disables +MAC asynchronously. The rx traffic may be not stopped in this case. + +So fixes it by waiting until mac link is down. + +Fixes: a9775bb64aa7 ("net: hns3: fix set and get link ksettings issue") +Signed-off-by: Jie Wang +Signed-off-by: Jijie Shao +Reviewed-by: Leon Romanovsky +Link: https://lore.kernel.org/r/20230807113452.474224-4-shaojijie@huawei.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +@@ -6560,6 +6560,8 @@ static void hclge_enable_fd(struct hnae3 + + static void hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable) + { ++#define HCLGE_LINK_STATUS_WAIT_CNT 3 ++ + struct hclge_desc desc; + struct hclge_config_mac_mode_cmd *req = + (struct hclge_config_mac_mode_cmd *)desc.data; +@@ -6584,9 +6586,15 @@ static void hclge_cfg_mac_mode(struct hc + req->txrx_pad_fcs_loop_en = cpu_to_le32(loop_en); + + ret = hclge_cmd_send(&hdev->hw, &desc, 1); +- if (ret) ++ if (ret) { + dev_err(&hdev->pdev->dev, + "mac enable fail, ret =%d.\n", ret); ++ return; ++ } ++ ++ if (!enable) ++ hclge_mac_link_status_wait(hdev, HCLGE_LINK_STATUS_DOWN, ++ HCLGE_LINK_STATUS_WAIT_CNT); + } + + static int hclge_config_switch_param(struct hclge_dev *hdev, int vfid, diff --git a/queue-5.10/net-hns3-refactor-hclge_mac_link_status_wait-for-interface-reuse.patch b/queue-5.10/net-hns3-refactor-hclge_mac_link_status_wait-for-interface-reuse.patch new file mode 100644 index 00000000000..132bdf4446d --- /dev/null +++ b/queue-5.10/net-hns3-refactor-hclge_mac_link_status_wait-for-interface-reuse.patch @@ -0,0 +1,73 @@ +From 08469dacfad25428b66549716811807203744f4f Mon Sep 17 00:00:00 2001 +From: Jie Wang +Date: Mon, 7 Aug 2023 19:34:50 +0800 +Subject: net: hns3: refactor hclge_mac_link_status_wait for interface reuse + +From: Jie Wang + +commit 08469dacfad25428b66549716811807203744f4f upstream. + +Some nic configurations could only be performed after link is down. So this +patch refactor this API for reuse. + +Signed-off-by: Jie Wang +Signed-off-by: Jijie Shao +Reviewed-by: Leon Romanovsky +Link: https://lore.kernel.org/r/20230807113452.474224-3-shaojijie@huawei.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +@@ -71,6 +71,8 @@ static int hclge_set_default_loopback(st + static void hclge_sync_mac_table(struct hclge_dev *hdev); + static void hclge_restore_hw_table(struct hclge_dev *hdev); + static void hclge_sync_promisc_mode(struct hclge_dev *hdev); ++static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret, ++ int wait_cnt); + + static struct hnae3_ae_algo ae_algo; + +@@ -6647,10 +6649,9 @@ static void hclge_phy_link_status_wait(s + } while (++i < HCLGE_PHY_LINK_STATUS_NUM); + } + +-static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret) ++static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret, ++ int wait_cnt) + { +-#define HCLGE_MAC_LINK_STATUS_NUM 100 +- + int link_status; + int i = 0; + int ret; +@@ -6663,13 +6664,15 @@ static int hclge_mac_link_status_wait(st + return 0; + + msleep(HCLGE_LINK_STATUS_MS); +- } while (++i < HCLGE_MAC_LINK_STATUS_NUM); ++ } while (++i < wait_cnt); + return -EBUSY; + } + + static int hclge_mac_phy_link_status_wait(struct hclge_dev *hdev, bool en, + bool is_phy) + { ++#define HCLGE_MAC_LINK_STATUS_NUM 100 ++ + int link_ret; + + link_ret = en ? HCLGE_LINK_STATUS_UP : HCLGE_LINK_STATUS_DOWN; +@@ -6677,7 +6680,8 @@ static int hclge_mac_phy_link_status_wai + if (is_phy) + hclge_phy_link_status_wait(hdev, link_ret); + +- return hclge_mac_link_status_wait(hdev, link_ret); ++ return hclge_mac_link_status_wait(hdev, link_ret, ++ HCLGE_MAC_LINK_STATUS_NUM); + } + + static int hclge_set_app_loopback(struct hclge_dev *hdev, bool en) diff --git a/queue-5.10/net-mlx5-allow-0-for-total-host-vfs.patch b/queue-5.10/net-mlx5-allow-0-for-total-host-vfs.patch new file mode 100644 index 00000000000..e3a387b65be --- /dev/null +++ b/queue-5.10/net-mlx5-allow-0-for-total-host-vfs.patch @@ -0,0 +1,33 @@ +From 2dc2b3922d3c0f52d3a792d15dcacfbc4cc76b8f Mon Sep 17 00:00:00 2001 +From: Daniel Jurgens +Date: Tue, 11 Jul 2023 00:28:10 +0300 +Subject: net/mlx5: Allow 0 for total host VFs + +From: Daniel Jurgens + +commit 2dc2b3922d3c0f52d3a792d15dcacfbc4cc76b8f upstream. + +When querying eswitch functions 0 is a valid number of host VFs. After +introducing ARM SRIOV falling through to getting the max value from PCI +results in using the total VFs allowed on the ARM for the host. + +Fixes: 86eec50beaf3 ("net/mlx5: Support querying max VFs from device"); +Signed-off-by: Daniel Jurgens +Signed-off-by: Saeed Mahameed +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/mellanox/mlx5/core/sriov.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c +@@ -211,8 +211,7 @@ static u16 mlx5_get_max_vfs(struct mlx5_ + host_total_vfs = MLX5_GET(query_esw_functions_out, out, + host_params_context.host_total_vfs); + kvfree(out); +- if (host_total_vfs) +- return host_total_vfs; ++ return host_total_vfs; + } + + done: diff --git a/queue-5.10/net-phy-at803x-remove-set-get-wol-callbacks-for-ar8032.patch b/queue-5.10/net-phy-at803x-remove-set-get-wol-callbacks-for-ar8032.patch new file mode 100644 index 00000000000..3a18d8bf976 --- /dev/null +++ b/queue-5.10/net-phy-at803x-remove-set-get-wol-callbacks-for-ar8032.patch @@ -0,0 +1,32 @@ +From d7791cec2304aea22eb2ada944e4d467302f5bfe Mon Sep 17 00:00:00 2001 +From: Li Yang +Date: Wed, 2 Aug 2023 14:13:47 -0500 +Subject: net: phy: at803x: remove set/get wol callbacks for AR8032 + +From: Li Yang + +commit d7791cec2304aea22eb2ada944e4d467302f5bfe upstream. + +Since the AR8032 part does not support wol, remove related callbacks +from it. + +Fixes: 5800091a2061 ("net: phy: at803x: add support for AR8032 PHY") +Signed-off-by: Li Yang +Cc: David Bauer +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/phy/at803x.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/drivers/net/phy/at803x.c ++++ b/drivers/net/phy/at803x.c +@@ -1115,8 +1115,6 @@ static struct phy_driver at803x_driver[] + .flags = PHY_POLL_CABLE_TEST, + .config_init = at803x_config_init, + .link_change_notify = at803x_link_change_notify, +- .set_wol = at803x_set_wol, +- .get_wol = at803x_get_wol, + .suspend = at803x_suspend, + .resume = at803x_resume, + /* PHY_BASIC_FEATURES */ diff --git a/queue-5.10/series b/queue-5.10/series index 3a728f0e03e..ddd888dea29 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -45,3 +45,11 @@ dccp-fix-data-race-around-dp-dccps_mss_cache.patch drivers-net-prevent-tun_build_skb-to-exceed-the-packet-size-limit.patch ib-hfi1-fix-possible-panic-during-hotplug-remove.patch wifi-cfg80211-fix-sband-iftype-data-lookup-for-ap_vlan.patch +net-phy-at803x-remove-set-get-wol-callbacks-for-ar8032.patch +net-hns3-refactor-hclge_mac_link_status_wait-for-interface-reuse.patch +net-hns3-add-wait-until-mac-link-down.patch +dmaengine-mcf-edma-fix-a-potential-un-allocated-memory-access.patch +net-mlx5-allow-0-for-total-host-vfs.patch +ibmvnic-enforce-stronger-sanity-checks-on-login-response.patch +ibmvnic-unmap-dma-login-rsp-buffer-on-send-login-fail.patch +ibmvnic-handle-dma-unmapping-of-login-buffs-in-release-functions.patch