mirror of
https://github.com/torvalds/linux.git
synced 2024-12-13 22:53:20 +00:00
e1000: check on netif_running() before calling e1000_up()
When the device is not up, the call to 'e1000_up()' from the error handling path of 'e1000_set_ringparam()' causes a kernel oops with a null-pointer dereference. The null-pointer dereference is triggered in function 'e1000_alloc_rx_buffers()' at line 'buffer_info = &rx_ring->buffer_info[i]'. This bug was reported by COD, a tool for testing kernel module binaries I am building. This bug was also detected by KFI from Dr. Kai Cong. This patch fixes the bug by checking on 'netif_running()' before calling 'e1000_up()' in 'e1000_set_ringparam()'. Signed-off-by: Bo Chen <chenbo@pdx.edu> Acked-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
a9910c0886
commit
cf1acec008
@ -644,7 +644,8 @@ err_setup_rx:
|
|||||||
err_alloc_rx:
|
err_alloc_rx:
|
||||||
kfree(txdr);
|
kfree(txdr);
|
||||||
err_alloc_tx:
|
err_alloc_tx:
|
||||||
e1000_up(adapter);
|
if (netif_running(adapter->netdev))
|
||||||
|
e1000_up(adapter);
|
||||||
err_setup:
|
err_setup:
|
||||||
clear_bit(__E1000_RESETTING, &adapter->flags);
|
clear_bit(__E1000_RESETTING, &adapter->flags);
|
||||||
return err;
|
return err;
|
||||||
|
Loading…
Reference in New Issue
Block a user