Files
linux-nv-oot/drivers/net/ethernet
Sushil Singh a397076302 nvethernet: Add NULL check for phydev in eee init
Issue:
During eth0 down case, the link change gets called twice,
1. due to ndo close
2. due to interrupt generated by phy.
The ether_adjust_link callback also configures the EEE settings
and calls phy_init_eee (a phy framework API) for the same.
Here a race condition occur, when ether_close sets phydev to NULL
before the phy_init_eee gets called (from ether_conf_eee) which tries
to deference the phydev causing kernel panic.

[35779.541305] Call trace:
[35779.544018]  phy_init_eee+0x24/0x290
[35779.547455]  ether_conf_eee+0x110/0x1310 [nvethernet]
[35779.552525]  ether_conf_eee+0x4e0/0x1310 [nvethernet]
[35779.557840]  phy_link_change+0x40/0x90
[35779.561603]  phy_state_machine+0x190/0x240
[35779.565643]  process_one_work+0x1c4/0x4d0
[35779.569396]  worker_thread+0x54/0x430
[35779.573072]  kthread+0x148/0x180
[35779.576586]  ret_from_fork+0x10/0x34
[35779.580069] Code: a90153f3 d5384113 a9025bf5 12001c36 (f941b801)
[35779.586195] ---[ end trace 2ea5b6492f36b0cb ]---
[35779.590737] Kernel panic - not syncing: Oops: Fatal exception

Fix:
Add a NULL check and return -ENODEVICE in EEE configuration

Bug 3877272
Bug 3920560
Bug 3865666
Bug 4088361

Change-Id: I2b26c6eeabb7a109b9d14b3bd2a035f5c3b3c6fa
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2854404
(cherry picked from commit 40606dc247eacf2a8987687777874575d9037058)
Signed-off-by: Sushil Kumar Singh <sushilkumars@nvidia.com>
Signed-off-by: Revanth Kumar Uppala <ruppala@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2855237
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-05-04 11:35:12 -07:00
..