projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
efe4186
)
net-sysfs: add check for netdevice being present to speed_show
author
suresh kumar
<suresh2514@gmail.com>
Thu, 17 Feb 2022 01:55:18 +0000
(07:25 +0530)
committer
David S. Miller
<davem@davemloft.net>
Fri, 18 Feb 2022 10:59:11 +0000
(10:59 +0000)
When bringing down the netdevice or system shutdown, a panic can be
triggered while accessing the sysfs path because the device is already
removed.
[ 755.549084] mlx5_core 0000:12:00.1: Shutdown was called
[ 756.404455] mlx5_core 0000:12:00.0: Shutdown was called
...
[ 757.937260] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 758.031397] IP: [<
ffffffff8ee11acb
>] dma_pool_alloc+0x1ab/0x280
crash> bt
...
PID: 12649 TASK:
ffff8924108f2100
CPU: 1 COMMAND: "amsd"
...
#9 [
ffff89240e1a38b0
] page_fault at
ffffffff8f38c778
[exception RIP: dma_pool_alloc+0x1ab]
RIP:
ffffffff8ee11acb
RSP:
ffff89240e1a3968
RFLAGS:
00010046
RAX:
0000000000000246
RBX:
ffff89243d874100
RCX:
0000000000001000
RDX:
0000000000000000
RSI:
0000000000000246
RDI:
ffff89243d874090
RBP:
ffff89240e1a39c0
R8:
000000000001f080
R9:
ffff8905ffc03c00
R10:
ffffffffc04680d4
R11:
ffffffff8edde9fd
R12:
00000000000080d0
R13:
ffff89243d874090
R14:
ffff89243d874080
R15:
0000000000000000
ORIG_RAX:
ffffffffffffffff
CS: 0010 SS: 0018
#10 [
ffff89240e1a39c8
] mlx5_alloc_cmd_msg at
ffffffffc04680f3
[mlx5_core]
#11 [
ffff89240e1a3a18
] cmd_exec at
ffffffffc046ad62
[mlx5_core]
#12 [
ffff89240e1a3ab8
] mlx5_cmd_exec at
ffffffffc046b4fb
[mlx5_core]
#13 [
ffff89240e1a3ae8
] mlx5_core_access_reg at
ffffffffc0475434
[mlx5_core]
#14 [
ffff89240e1a3b40
] mlx5e_get_fec_caps at
ffffffffc04a7348
[mlx5_core]
#15 [
ffff89240e1a3bb0
] get_fec_supported_advertised at
ffffffffc04992bf
[mlx5_core]
#16 [
ffff89240e1a3c08
] mlx5e_get_link_ksettings at
ffffffffc049ab36
[mlx5_core]
#17 [
ffff89240e1a3ce8
] __ethtool_get_link_ksettings at
ffffffff8f25db46
#18 [
ffff89240e1a3d48
] speed_show at
ffffffff8f277208
#19 [
ffff89240e1a3dd8
] dev_attr_show at
ffffffff8f0b70e3
#20 [
ffff89240e1a3df8
] sysfs_kf_seq_show at
ffffffff8eedbedf
#21 [
ffff89240e1a3e18
] kernfs_seq_show at
ffffffff8eeda596
#22 [
ffff89240e1a3e28
] seq_read at
ffffffff8ee76d10
#23 [
ffff89240e1a3e98
] kernfs_fop_read at
ffffffff8eedaef5
#24 [
ffff89240e1a3ed8
] vfs_read at
ffffffff8ee4e3ff
#25 [
ffff89240e1a3f08
] sys_read at
ffffffff8ee4f27f
#26 [
ffff89240e1a3f50
] system_call_fastpath at
ffffffff8f395f92
crash> net_device.state
ffff89443b0c0000
state = 0x5 (__LINK_STATE_START| __LINK_STATE_NOCARRIER)
To prevent this scenario, we also make sure that the netdevice is present.
Signed-off-by: suresh kumar <suresh2514@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/net-sysfs.c
patch
|
blob
|
history
diff --git
a/net/core/net-sysfs.c
b/net/core/net-sysfs.c
index 53ea262ecafd0c1e537a7e63f313745fb7ba53bb..fbddf966206b61573b94f0f0e433249570a9cba5 100644
(file)
--- a/
net/core/net-sysfs.c
+++ b/
net/core/net-sysfs.c
@@
-213,7
+213,7
@@
static ssize_t speed_show(struct device *dev,
if (!rtnl_trylock())
return restart_syscall();
- if (netif_running(netdev)) {
+ if (netif_running(netdev)
&& netif_device_present(netdev)
) {
struct ethtool_link_ksettings cmd;
if (!__ethtool_get_link_ksettings(netdev, &cmd))