Fix crash on reboot on a system with ASIX AX88178 USB adapter attached
to it:
| asix 1-1.4:1.0 eth0: unregister 'asix' usb-ci_hdrc.0-1.4, ASIX AX88178 USB 2.0 Ethernet
| 8<--- cut here ---
| Unable to handle kernel NULL pointer dereference at virtual address
0000028c
| pgd =
5ec93aee
| [
0000028c] *pgd=
00000000
| Internal error: Oops: 5 [#1] PREEMPT SMP ARM
| Modules linked in:
| CPU: 1 PID: 1 Comm: systemd-shutdow Not tainted 5.14.0-rc1-
20210811-1 #4
| Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
| PC is at phy_disconnect+0x8/0x48
| LR is at ax88772_unbind+0x14/0x20
| [<
80650d04>] (phy_disconnect) from [<
80741aa4>] (ax88772_unbind+0x14/0x20)
| [<
80741aa4>] (ax88772_unbind) from [<
8074e250>] (usbnet_disconnect+0x48/0xd8)
| [<
8074e250>] (usbnet_disconnect) from [<
807655e0>] (usb_unbind_interface+0x78/0x25c)
| [<
807655e0>] (usb_unbind_interface) from [<
805b03a0>] (__device_release_driver+0x154/0x20c)
| [<
805b03a0>] (__device_release_driver) from [<
805b0478>] (device_release_driver+0x20/0x2c)
| [<
805b0478>] (device_release_driver) from [<
805af944>] (bus_remove_device+0xcc/0xf8)
| [<
805af944>] (bus_remove_device) from [<
805ab26c>] (device_del+0x178/0x4b0)
| [<
805ab26c>] (device_del) from [<
807634a4>] (usb_disable_device+0xcc/0x178)
| [<
807634a4>] (usb_disable_device) from [<
8075a060>] (usb_disconnect+0xd8/0x238)
| [<
8075a060>] (usb_disconnect) from [<
8075a02c>] (usb_disconnect+0xa4/0x238)
| [<
8075a02c>] (usb_disconnect) from [<
8075a02c>] (usb_disconnect+0xa4/0x238)
| [<
8075a02c>] (usb_disconnect) from [<
80af3520>] (usb_remove_hcd+0xa0/0x198)
| [<
80af3520>] (usb_remove_hcd) from [<
807902e0>] (host_stop+0x38/0xa8)
| [<
807902e0>] (host_stop) from [<
8078d9e4>] (ci_hdrc_remove+0x3c/0x118)
| [<
8078d9e4>] (ci_hdrc_remove) from [<
805b27ec>] (platform_remove+0x20/0x50)
| [<
805b27ec>] (platform_remove) from [<
805b03a0>] (__device_release_driver+0x154/0x20c)
| [<
805b03a0>] (__device_release_driver) from [<
805b0478>] (device_release_driver+0x20/0x2c)
| [<
805b0478>] (device_release_driver) from [<
805af944>] (bus_remove_device+0xcc/0xf8)
| [<
805af944>] (bus_remove_device) from [<
805ab26c>] (device_del+0x178/0x4b0)
For this adapter we call ax88178_bind() and ax88772_unbind(), which is
related to different chip version and different counter part *bind()
function.
Since this chip is currently not ported to the PHYLIB, we do not need to
call phy_disconnect() here. So, to fix this crash, we need to add
ax88178_unbind().
Fixes:
e532a096be0e ("net: usb: asix: ax88772: add phylib support")
Reported-by: Robin van der Gracht <robin@protonic.nl>
Tested-by: Robin van der Gracht <robin@protonic.nl>
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>