lkml.org 
[lkml]   [2021]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 157/421] ibmvnic: free tx_pool if tso_pool alloc fails
    Date
    From: Sukadev Bhattiprolu <sukadev@linux.ibm.com>

    [ Upstream commit f6ebca8efa52e4ae770f0325d618e7bcf08ada0c ]

    Free tx_pool and clear it, if allocation of tso_pool fails.

    release_tx_pools() assumes we have both tx and tso_pools if ->tx_pool is
    non-NULL. If allocation of tso_pool fails in init_tx_pools(), the assumption
    will not be true and we would end up dereferencing ->tx_buff, ->free_map
    fields from a NULL pointer.

    Fixes: 3205306c6b8d ("ibmvnic: Update TX pool initialization routine")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/ibm/ibmvnic.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
    index 0eb06750a5d6..4008007c2e34 100644
    --- a/drivers/net/ethernet/ibm/ibmvnic.c
    +++ b/drivers/net/ethernet/ibm/ibmvnic.c
    @@ -698,8 +698,11 @@ static int init_tx_pools(struct net_device *netdev)

    adapter->tso_pool = kcalloc(tx_subcrqs,
    sizeof(struct ibmvnic_tx_pool), GFP_KERNEL);
    - if (!adapter->tso_pool)
    + if (!adapter->tso_pool) {
    + kfree(adapter->tx_pool);
    + adapter->tx_pool = NULL;
    return -1;
    + }

    adapter->num_active_tx_pools = tx_subcrqs;

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-19 18:18    [W:2.127 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site