lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220622141638.GE930160@montezuma.acc.umu.se>
Date:   Wed, 22 Jun 2022 16:16:38 +0200
From:   Anton Lundin <glance@....umu.se>
To:     Oleksij Rempel <o.rempel@...gutronix.de>,
        "David S. Miller" <davem@...emloft.net>
Cc:     linux-kernel@...r.kernel.org, linux-usb@...r.kernel.org,
        netdev@...r.kernel.org
Subject: [REGRESSION] AX88772 card booted without cable can't receive

Hi.

I've found a issue with a Dlink usb ether adapter, that can't receive
anything until it self transmits if it's plugged in while booting, and
doesn't have link.

Later when a cable is attached, link is detected but nothing is received
either by daemons listening to ip address on that interface, or seen
with tcpdump.

The dongle is a:
D-Link Corp. DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772]

And it's detected at boot as:
libphy: Asix MDIO Bus: probed
Asix Electronics AX88772C usb-003:004:10: attached PHY driver (mii_bus:phy_addr=usb-003:004:10, irq=POLL)
asix 3-10.4:1.0 eth1: register 'asix' at usb-0000:00:14.0-10.4, ASIX AX88772 USB 2.0 Ethernet, <masked-mac>
usbcore: registered new interface driver asix


While in this state, the hardware starts sending pause frames to the
network when it has recived a couple of frames, and they look like:
0000   01 80 c2 00 00 01 00 00 00 00 00 00 88 08 00 01
0010   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030   00 00 00 00 00 00 00 00 00 00 00 00

0000   01 80 c2 00 00 01 00 00 00 00 00 00 88 08 00 01
0010   ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030   00 00 00 00 00 00 00 00 00 00 00 00

And these two frames are repeated every couple of seconds.

The card wakes up when something triggers a transmit on that card, and
then starts receiving traffic as normal.

I've bisected this issue down to:
"net: usb: asix: ax88772: add phylib support" (e532a096be0e)


Reverting that makes the interface work as normal, even if the machine
boots without a cable plugged in.

Another issue found with exactly the same patch is that if it's loaded
as a module, then unloaded and loaded again, it fails to initialize the
card with:

sysfs: cannot create duplicate filename '/devices/virtual/mdio_bus/usb-003:004'
CPU: 0 PID: 3733 Comm: modprobe Tainted: G           O      5.15.10-core_64_preempt #3
Hardware name:  <masked-hardware-name>
Call Trace:
 <TASK>
 ? dump_stack_lvl+0x34/0x44
 ? sysfs_warn_dup.cold+0x17/0x24
 ? sysfs_create_dir_ns+0xbc/0xd0
 ? kobject_add_internal+0xa6/0x260
 ? kobject_add+0x7e/0xb0
 ? preempt_count_add+0x68/0xa0
 ? device_add+0x10f/0x8d0
 ? dev_set_name+0x53/0x70
 ? __mdiobus_register+0xc2/0x350
 ? __devm_mdiobus_register+0x64/0xb0
 ? ax88772_bind+0x22a/0x340 [asix]
 ? usbnet_probe+0x346/0x870
 ? usb_match_dynamic_id+0x8f/0xa0
 ? usb_probe_interface+0x9b/0x150
 ? really_probe.part.0+0x237/0x280
 ? __driver_probe_device+0x8c/0xd0
 ? driver_probe_device+0x1e/0xe0
 ? __driver_attach+0xa8/0x170
 ? __device_attach_driver+0xe0/0xe0
 ? bus_for_each_dev+0x77/0xc0
 ? bus_add_driver+0x10b/0x1c0
 ? driver_register+0x8b/0xe0
 ? usb_register_driver+0x84/0x120
 ? 0xffffffffc06e4000
 ? do_one_initcall+0x41/0x1f0
 ? kmem_cache_alloc_trace+0x3f/0x1b0
 ? do_init_module+0x5c/0x260
 ? __do_sys_finit_module+0xa0/0xe0
 ? do_syscall_64+0x35/0x80
 ? entry_SYSCALL_64_after_hwframe+0x44/0xae
 </TASK>
kobject_add_internal failed for usb-003:004 with -EEXIST, don't try to register things with the same name in the same directory.
libphy: mii_bus usb-003:004 failed to register
asix: probe of 3-10.4:1.0 failed with error -22 
usbcore: registered new interface driver asix


Both these issues with "net: usb: asix: ax88772: add phylib support"
(e532a096be0e) can be reproduced all the way from when it was introduced
to linus current tree.


I'm sorry to say that I don't know enough about either libphy or asix to
figure out what cause the issues can be.



//Anton

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ