lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 484/700] ibmvnic: account for bufs already saved in indir_buf
    Date
    From: Sukadev Bhattiprolu <sukadev@linux.ibm.com>

    [ Upstream commit 72368f8b2b9e4106072a2728bed3367d54641c22 ]

    This fixes a crash in replenish_rx_pool() when called from ibmvnic_poll()
    after a previous call to replenish_rx_pool() encountered an error when
    allocating a socket buffer.

    Thanks to Rick Lindsley and Dany Madden for helping debug the crash.

    Fixes: 4f0b6812e9b9 ("ibmvnic: Introduce batched RX buffer descriptor transmission")
    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 | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
    index e8f4bdb1079c..f1a6f454fe97 100644
    --- a/drivers/net/ethernet/ibm/ibmvnic.c
    +++ b/drivers/net/ethernet/ibm/ibmvnic.c
    @@ -328,7 +328,14 @@ static void replenish_rx_pool(struct ibmvnic_adapter *adapter,

    rx_scrq = adapter->rx_scrq[pool->index];
    ind_bufp = &rx_scrq->ind_buf;
    - for (i = 0; i < count; ++i) {
    +
    + /* netdev_skb_alloc() could have failed after we saved a few skbs
    + * in the indir_buf and we would not have sent them to VIOS yet.
    + * To account for them, start the loop at ind_bufp->index rather
    + * than 0. If we pushed all the skbs to VIOS, ind_bufp->index will
    + * be 0.
    + */
    + for (i = ind_bufp->index; i < count; ++i) {
    skb = netdev_alloc_skb(adapter->netdev, pool->buff_size);
    if (!skb) {
    dev_err(dev, "Couldn't replenish rx buff\n");
    --
    2.30.2


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