• Gerhard Engleder's avatar
    tsnep: Fix set MAC address · 75e47206
    Gerhard Engleder authored
    Commit 4dfb9982 ("tsn:  Fix build.") fixed compilation with const
    dev_addr. In tsnep_netdev_set_mac_address() the call of ether_addr_copy()
    was replaced with dev_set_mac_address(), which calls
    ndo_set_mac_address(). This results in an endless recursive loop because
    ndo_set_mac_address is set to tsnep_netdev_set_mac_address.
    
    Call eth_hw_addr_set() instead of dev_set_mac_address() in
    ndo_set_mac_address()/tsnep_netdev_set_mac_address() to copy the address
    as intended.
    
    [   26.563303] Insufficient stack space to handle exception!
    [   26.563312] ESR: 0x96000047 -- DABT (current EL)
    [   26.563317] FAR: 0xffff80000a507fc0
    [   26.563320] Task stack:     [0xffff80000a508000..0xffff80000a50c000]
    [   26.563324] IRQ stack:      [0xffff80000a0c0000..0xffff80000a0c4000]
    [   26.563327] Overflow stack: [0xffff00007fbaf2b0..0xffff00007fbb02b0]
    [   26.563333] CPU: 3 PID: 381 Comm: ifconfig Not tainted 5.16.0-rc1-zynqmp #60
    [   26.563340] Hardware name: TSN endpoint (DT)
    [   26.563343] pstate: a0000005 (NzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [   26.563351] pc : inetdev_event+0x4/0x560
    [   26.563364] lr : raw_notifier_call_chain+0x54/0x78
    [   26.563372] sp : ffff80000a508040
    [   26.563374] x29: ffff80000a508040 x28: ffff00000132b800 x27: 0000000000000000
    [   26.563386] x26: 0000000000000000 x25: ffff800000ea5058 x24: 0904030201020001
    [   26.563396] x23: ffff800000ea5058 x22: ffff80000a5080e0 x21: 0000000000000009
    [   26.563405] x20: 00000000fffffffa x19: ffff80000a009510 x18: 0000000000000000
    [   26.563414] x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffffd1341030
    [   26.563422] x14: ffffffffffffffff x13: 0000000000000020 x12: 0101010101010101
    [   26.563432] x11: 0000000000000020 x10: 0101010101010101 x9 : 7f7f7f7f7f7f7f7f
    [   26.563441] x8 : 7f7f7f7f7f7f7f7f x7 : fefefeff30677364 x6 : 0000000080808080
    [   26.563450] x5 : 0000000000000000 x4 : ffff800008dee170 x3 : ffff80000a50bd42
    [   26.563459] x2 : ffff80000a5080e0 x1 : 0000000000000009 x0 : ffff80000a0092d0
    [   26.563470] Kernel panic - not syncing: kernel stack overflow
    [   26.563474] CPU: 3 PID: 381 Comm: ifconfig Not tainted 5.16.0-rc1-zynqmp #60
    [   26.563481] Hardware name: TSN endpoint (DT)
    [   26.563484] Call trace:
    [   26.563486]  dump_backtrace+0x0/0x1b0
    [   26.563497]  show_stack+0x18/0x68
    [   26.563504]  dump_stack_lvl+0x68/0x84
    [   26.563513]  dump_stack+0x18/0x34
    [   26.563519]  panic+0x164/0x324
    [   26.563524]  nmi_panic+0x64/0x98
    [   26.563533]  panic_bad_stack+0x108/0x128
    [   2k6.563539]  handle_bad_stack+0x38/0x68
    [   26.563548]  __bad_stack+0x88/0x8c
    [   26.563553]  inetdev_event+0x4/0x560
    [   26.563560]  call_netdevice_notifiers_info+0x58/0xa8
    [   26.563569]  dev_set_mac_address+0x78/0x110
    [   26.563576]  tsnep_netdev_set_mac_address+0x38/0x60 [tsnep]
    [   26.563591]  dev_set_mac_address+0xc4/0x110
    [   26.563599]  tsnep_netdev_set_mac_address+0x38/0x60 [tsnep]
    ...
    [   26.565444]  dev_set_mac_address+0xc4/0x110
    [   26.565452]  tsnep_netdev_set_mac_address+0x38/0x60 [tsnep]
    [   26.565462]  dev_set_mac_address+0xc4/0x110
    [   26.565469]  dev_set_mac_address_user+0x44/0x68
    [   26.565477]  dev_ifsioc+0x30c/0x568
    [   26.565483]  dev_ioctl+0x124/0x3f0
    [   26.565489]  sock_do_ioctl+0xb4/0xf8
    [   26.565497]  sock_ioctl+0x2f4/0x398
    [   26.565503]  __arm64_sys_ioctl+0xa8/0xe8
    [   26.565511]  invoke_syscall+0x44/0x108
    [   26.565520]  el0_svc_common.constprop.3+0x94/0xf8
    [   26.565527]  do_el0_svc+0x24/0x88
    [   26.565534]  el0_svc+0x20/0x50
    [   26.565541]  el0t_64_sync_handler+0x90/0xb8
    [   26.565548]  el0t_64_sync+0x180/0x184
    [   26.565556] SMP: stopping secondary CPUs
    [   26.565622] Kernel Offset: disabled
    [   26.565624] CPU features: 0x0,00004002,00000846
    [   26.565628] Memory Limit: none
    [   27.843428] ---[ end Kernel panic - not syncing: kernel stack overflow ]---
    
    Fixes: 4dfb9982 ("tsn:  Fix build.")
    Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    75e47206
tsnep_main.c 32.7 KB