lkml.org 
[lkml]   [2018]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.18 34/56] ice: Fix a few null pointer dereference issues
    Date
    From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

    [ Upstream commit c7f2c42b80ed6009f44e355aefc1e40db9485a9d ]

    1) When ice_ena_msix_range() fails to reserve vectors, a devm_kfree()
    warning was seen in the error flow path. So check pf->irq_tracker
    before use in ice_clear_interrupt_scheme().

    2) In ice_vsi_cfg(), check vsi->netdev before use.

    3) In ice_get_link_status, check link_up before use.

    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/ethernet/intel/ice/ice_common.c | 2 +-
    drivers/net/ethernet/intel/ice/ice_main.c | 17 ++++++++++-------
    2 files changed, 11 insertions(+), 8 deletions(-)

    diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
    index d5300b606d5a..ebd701ac9428 100644
    --- a/drivers/net/ethernet/intel/ice/ice_common.c
    +++ b/drivers/net/ethernet/intel/ice/ice_common.c
    @@ -1483,7 +1483,7 @@ enum ice_status ice_get_link_status(struct ice_port_info *pi, bool *link_up)
    struct ice_phy_info *phy_info;
    enum ice_status status = 0;

    - if (!pi)
    + if (!pi || !link_up)
    return ICE_ERR_PARAM;

    phy_info = &pi->phy;
    diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
    index 5458c3ae10c5..aaaa1e2a7df6 100644
    --- a/drivers/net/ethernet/intel/ice/ice_main.c
    +++ b/drivers/net/ethernet/intel/ice/ice_main.c
    @@ -3260,8 +3260,10 @@ static void ice_clear_interrupt_scheme(struct ice_pf *pf)
    if (test_bit(ICE_FLAG_MSIX_ENA, pf->flags))
    ice_dis_msix(pf);

    - devm_kfree(&pf->pdev->dev, pf->irq_tracker);
    - pf->irq_tracker = NULL;
    + if (pf->irq_tracker) {
    + devm_kfree(&pf->pdev->dev, pf->irq_tracker);
    + pf->irq_tracker = NULL;
    + }
    }

    /**
    @@ -4115,11 +4117,12 @@ static int ice_vsi_cfg(struct ice_vsi *vsi)
    {
    int err;

    - ice_set_rx_mode(vsi->netdev);
    -
    - err = ice_restore_vlan(vsi);
    - if (err)
    - return err;
    + if (vsi->netdev) {
    + ice_set_rx_mode(vsi->netdev);
    + err = ice_restore_vlan(vsi);
    + if (err)
    + return err;
    + }

    err = ice_vsi_cfg_txqs(vsi);
    if (!err)
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-09-20 04:57    [W:4.339 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site