From: Sasha Levin Date: Thu, 24 Sep 2020 23:38:15 +0000 (-0400) Subject: Fixes for 5.8 X-Git-Tag: v4.19.148~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d87d711f8b086fb2f7c7ecb16440646dfa4c5b7f;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.8 Signed-off-by: Sasha Levin --- diff --git a/queue-5.8/ibmvnic-add-missing-parenthesis-in-do_reset.patch b/queue-5.8/ibmvnic-add-missing-parenthesis-in-do_reset.patch new file mode 100644 index 00000000000..97b14ad1317 --- /dev/null +++ b/queue-5.8/ibmvnic-add-missing-parenthesis-in-do_reset.patch @@ -0,0 +1,47 @@ +From 58893e81a820a9bd5433b4f0250ecb6c5fc1635a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 4 Sep 2020 21:07:49 -0700 +Subject: ibmvnic: add missing parenthesis in do_reset() + +From: Jakub Kicinski + +[ Upstream commit 8ae4dff882eb879c17bf46574201bd37fc6bc8b5 ] + +Indentation and logic clearly show that this code is missing +parenthesis. + +Fixes: 9f1345737790 ("ibmvnic fix NULL tx_pools and rx_tools issue at do_reset") +Signed-off-by: Jakub Kicinski +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/ibm/ibmvnic.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c +index d3a774331afc7..1b702a43a5d01 100644 +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -2032,16 +2032,18 @@ static int do_reset(struct ibmvnic_adapter *adapter, + + } else { + rc = reset_tx_pools(adapter); +- if (rc) ++ if (rc) { + netdev_dbg(adapter->netdev, "reset tx pools failed (%d)\n", + rc); + goto out; ++ } + + rc = reset_rx_pools(adapter); +- if (rc) ++ if (rc) { + netdev_dbg(adapter->netdev, "reset rx pools failed (%d)\n", + rc); + goto out; ++ } + } + ibmvnic_disable_irqs(adapter); + } +-- +2.25.1 + diff --git a/queue-5.8/ibmvnic-fix-null-tx_pools-and-rx_tools-issue-at-do_r.patch b/queue-5.8/ibmvnic-fix-null-tx_pools-and-rx_tools-issue-at-do_r.patch new file mode 100644 index 00000000000..34e4a096787 --- /dev/null +++ b/queue-5.8/ibmvnic-fix-null-tx_pools-and-rx_tools-issue-at-do_r.patch @@ -0,0 +1,83 @@ +From 8f3b38ce364cc3b973a435b5545d23452455a6e4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 25 Aug 2020 13:26:41 -0400 +Subject: ibmvnic fix NULL tx_pools and rx_tools issue at do_reset + +From: Mingming Cao + +[ Upstream commit 9f13457377907fa253aef560e1a37e1ca4197f9b ] + +At the time of do_rest, ibmvnic tries to re-initalize the tx_pools +and rx_pools to avoid re-allocating the long term buffer. However +there is a window inside do_reset that the tx_pools and +rx_pools were freed before re-initialized making it possible to deference +null pointers. + +This patch fix this issue by always check the tx_pool +and rx_pool are not NULL after ibmvnic_login. If so, re-allocating +the pools. This will avoid getting into calling reset_tx/rx_pools with +NULL adapter tx_pools/rx_pools pointer. Also add null pointer check in +reset_tx_pools and reset_rx_pools to safe handle NULL pointer case. + +Signed-off-by: Mingming Cao +Signed-off-by: Dany Madden +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/ibm/ibmvnic.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c +index 5afb3c9c52d20..d3a774331afc7 100644 +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -479,6 +479,9 @@ static int reset_rx_pools(struct ibmvnic_adapter *adapter) + int i, j, rc; + u64 *size_array; + ++ if (!adapter->rx_pool) ++ return -1; ++ + size_array = (u64 *)((u8 *)(adapter->login_rsp_buf) + + be32_to_cpu(adapter->login_rsp_buf->off_rxadd_buff_size)); + +@@ -649,6 +652,9 @@ static int reset_tx_pools(struct ibmvnic_adapter *adapter) + int tx_scrqs; + int i, rc; + ++ if (!adapter->tx_pool) ++ return -1; ++ + tx_scrqs = be32_to_cpu(adapter->login_rsp_buf->num_txsubm_subcrqs); + for (i = 0; i < tx_scrqs; i++) { + rc = reset_one_tx_pool(adapter, &adapter->tso_pool[i]); +@@ -2011,7 +2017,10 @@ static int do_reset(struct ibmvnic_adapter *adapter, + adapter->req_rx_add_entries_per_subcrq != + old_num_rx_slots || + adapter->req_tx_entries_per_subcrq != +- old_num_tx_slots) { ++ old_num_tx_slots || ++ !adapter->rx_pool || ++ !adapter->tso_pool || ++ !adapter->tx_pool) { + release_rx_pools(adapter); + release_tx_pools(adapter); + release_napi(adapter); +@@ -2024,10 +2033,14 @@ static int do_reset(struct ibmvnic_adapter *adapter, + } else { + rc = reset_tx_pools(adapter); + if (rc) ++ netdev_dbg(adapter->netdev, "reset tx pools failed (%d)\n", ++ rc); + goto out; + + rc = reset_rx_pools(adapter); + if (rc) ++ netdev_dbg(adapter->netdev, "reset rx pools failed (%d)\n", ++ rc); + goto out; + } + ibmvnic_disable_irqs(adapter); +-- +2.25.1 + diff --git a/queue-5.8/series b/queue-5.8/series index e69de29bb2d..92f80e8b24a 100644 --- a/queue-5.8/series +++ b/queue-5.8/series @@ -0,0 +1,2 @@ +ibmvnic-fix-null-tx_pools-and-rx_tools-issue-at-do_r.patch +ibmvnic-add-missing-parenthesis-in-do_reset.patch