• Tong Zhang's avatar
    net: arcnet: com20020 fix error handling · 6577b9a5
    Tong Zhang authored
    There are two issues when handling error case in com20020pci_probe()
    
    1. priv might be not initialized yet when calling com20020pci_remove()
    from com20020pci_probe(), since the priv is set at the very last but it
    can jump to error handling in the middle and priv remains NULL.
    2. memory leak - the net device is allocated in alloc_arcdev but not
    properly released if error happens in the middle of the big for loop
    
    [    1.529110] BUG: kernel NULL pointer dereference, address: 0000000000000008
    [    1.531447] RIP: 0010:com20020pci_remove+0x15/0x60 [com20020_pci]
    [    1.536805] Call Trace:
    [    1.536939]  com20020pci_probe+0x3f2/0x48c [com20020_pci]
    [    1.537226]  local_pci_probe+0x48/0x80
    [    1.539918]  com20020pci_init+0x3f/0x1000 [com20020_pci]
    Signed-off-by: default avatarTong Zhang <ztong0001@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6577b9a5
com20020-pci.c 11.9 KB