EM7455 driver kernel hang when qcserial is unloaded on RedHat/CentOS 8.5

Upgraded from CentOS 8.4 to 8.5 and the qcserial driver hangs in usbcore while being unloaded.

Tried also the driver from MBPL_Drivers_USB_R24_ENG3-src.tar.gz with same result.

Seems the ttyUSB3 is not fully disconnecting from the USB bus during rmmod.

[ note: ttyUSB0 is the serial console for this system. ttyUSB1,2,3 are the EM ports ]

The problem did not occur with CentOS 8.4, it only started after upgrade to CentOS 8.5

Has Sierra tested on RedHat/CentOS/OracleLinux 8.5 and seen any similar issue?

Issue is reproducible on multiple EM7455 systems.

Here’s the relevant dmesg showing the lockup:

[51429.577440] usb 2-1: USB disconnect, device number 2
[51429.582622] qcserial ttyUSB1: Qualcomm USB modem converter now disconnected from ttyUSB1
[51429.590993] qcserial 2-1:1.0: device disconnected
[51429.596012] qcserial ttyUSB2: Qualcomm USB modem converter now disconnected from ttyUSB2
[51429.604258] qcserial 2-1:1.2: device disconnected
[51609.662278] INFO: task kworker/0:3:15238 blocked for more than 120 seconds.
[51609.669264] Tainted: G IOE --------- - - 4.18.0-348.20.1.el8_5.x86_64 #1
[51609.677622] “echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
[51609.685461] task:kworker/0:3 state:D stack: 0 pid:15238 ppid: 2 flags:0x80004080
[51609.693828] Workqueue: usb_hub_wq hub_event
[51609.698026] Call Trace:
[51609.700485] __schedule+0x2bd/0x760
[51609.703982] schedule+0x37/0xa0
[51609.707145] usb_kill_urb+0x86/0xc0
[51609.710647] ? finish_wait+0x80/0x80
[51609.714234] usb_hcd_flush_endpoint+0x160/0x170
[51609.718791] usb_disable_endpoint+0xa6/0xc0
[51609.722978] usb_disable_interface+0x3c/0x50
[51609.727267] usb_unbind_interface+0x15c/0x260
[51609.731630] ? kernfs_find_ns+0x35/0xc0
[51609.735478] device_release_driver_internal+0x103/0x1f0
[51609.740728] bus_remove_device+0xf7/0x170
[51609.744742] device_del+0x181/0x410
[51609.748250] usb_disable_device+0x8c/0x1a0
[51609.752359] usb_disconnect+0xbc/0x250
[51609.756121] hub_port_connect+0x87/0xa50
[51609.760054] port_event+0x57a/0x880
[51609.763556] hub_event+0x14f/0x3c0
[51609.766962] process_one_work+0x1a7/0x360
[51609.770990] ? create_worker+0x1a0/0x1a0
[51609.774915] worker_thread+0x30/0x390
[51609.778583] ? create_worker+0x1a0/0x1a0
[51609.782524] kthread+0x116/0x130
[51609.785760] ? kthread_flush_work_fn+0x10/0x10
[51609.790206] ret_from_fork+0x35/0x40

Dear @iainb ,
Welcome to our community!
Please refer to section 2.1.5 and 2.1.6 in Software_Integration_and_Development_Guide_for_Linux_USB_Platforms_R24.pdf to disable ModemManager and blacklist Gobi drivers then recheck whether the problem is resolved

Thanks

We are using CentOS which does not have ModemManager and Gobi drivers had already been blacklisted when the issue @iainb posted happened.