• Aleksey Makarov's avatar
    net: thunderx: fix double free error · 3d67a507
    Aleksey Makarov authored
    This patch fixes an error in memory allocation/freeing in
    ThunderX PF driver.
    
    I moved the allocation to the probe() function and made it managed.
    
    >From the Colin's email:
    
    While running static analysis on linux-next with CoverityScan I found 3
    double free errors in the Cavium thunder driver.
    
    The issue occurs on the err_disable_device: label of function nic_probe
    when nic_free_lmacmem(nic) is called and a double free occurs on
    nic->duplex, nic->link and nic->speed.  This occurs when nic_init_hw()
    fails:
    
            /* Initialize hardware */
            err = nic_init_hw(nic);
            if (err)
                    goto err_release_regions;
    
    nic_init_hw() calls nic_get_hw_info() and this calls nic_free_lmacmem()
    if any of the allocations fail. This free'ing occurs again by the call
    to nic_free_lmacmem() on the err_release_regions exit path in nic_probe().
    Reported-by: default avatarColin Ian King <colin.king@canonical.com>
    Signed-off-by: default avatarAleksey Makarov <aleksey.makarov@cavium.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3d67a507
nic_main.c 37.4 KB