kernel freeze on USB disconnect after failure to set rts/dts on USB VCP device

Bug #1905782 reported by Corvus Corax
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

When plugging in a USB device on Ubuntu 18.04 that offers a virtual modem/com port (typically /dev/ttyACM0) then the "modemmanager" service will try to configure this modem/serial port automatically without user interaction, setting dtr/rts parameters.

However sometimes USB modem devices are used as a generic serial interface to hardware internals, without an actual serial line connected. Setting dtr/rts makes no sense in this context, and this feature might be unsupported.

This, however, triggers a faulty code path in the linux kernel that on device disconnect causes a kworker process to freeze - blocking the CPU core it is running on indefinitely.

This in turn has catastrophic effects on system stability. Some IO calls, that run on other cores, will work without problem, while those scheduled on the same core will never execute.

Although no "OOPS" or "PANIC" is generated, the situation is dire, as the system typically can not be shutdown or rebooted, and during tests I ended up with file system corruption in a few cases that could not be fixed by a simple journal recovery

To trigger this bug, several side-conditions need to be met:
1. A USB device needs to be plugged in that provides a virtual com port
2. The device must not support setting of DTR/RTS parameters
3. A program must try to set these via ioctls
4. The device must then be disconnected
--> Kernel freeze

On Ubuntu "3." is always guaranteed, if modemmanager is installed and the service is running

Please contact me if you need additional information about how to reproduce this.

ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: linux-image-4.15.0-124-generic 4.15.0-124.127
ProcVersionSignature: Ubuntu 4.15.0-124.127-generic 4.15.18
Uname: Linux 4.15.0-124-generic x86_64
ApportVersion: 2.20.9-0ubuntu7.20
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: raven 2039 F.... pulseaudio
CurrentDesktop: XFCE
Date: Thu Nov 26 20:30:58 2020
EcryptfsInUse: Yes
HibernationDevice:
 #RESUME=UUID=de4646dc-eb1a-4530-b6bc-df659b641728
 RESUME=none
InstallationDate: Installed on 2017-04-28 (1308 days ago)
InstallationMedia: Ubuntu 16.04.2 LTS "Xenial Xerus" - Release amd64 (20170215.2)
MachineType: FUJITSU LIFEBOOK E736
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.15.0-124-generic root=/dev/mapper/ubuntu--vg-root ro "acpi_osi=!Windows 2012"
RelatedPackageVersions:
 linux-restricted-modules-4.15.0-124-generic N/A
 linux-backports-modules-4.15.0-124-generic N/A
 linux-firmware 1.173.19
SourcePackage: linux
UpgradeStatus: Upgraded to bionic on 2019-06-28 (517 days ago)
dmi.bios.date: 12/20/2016
dmi.bios.vendor: FUJITSU // Insyde Software Corp.
dmi.bios.version: Version 1.22
dmi.board.name: FJNB293
dmi.board.vendor: FUJITSU
dmi.board.version: M4
dmi.chassis.type: 10
dmi.chassis.vendor: FUJITSU
dmi.chassis.version: LIFEBOOK E736
dmi.modalias: dmi:bvnFUJITSU//InsydeSoftwareCorp.:bvrVersion1.22:bd12/20/2016:svnFUJITSU:pnLIFEBOOKE736:pvr10601115935:rvnFUJITSU:rnFJNB293:rvrM4:cvnFUJITSU:ct10:cvrLIFEBOOKE736:
dmi.product.family: LIFEBOOK-FTS
dmi.product.name: LIFEBOOK E736
dmi.product.version: 10601115935
dmi.sys.vendor: FUJITSU

Revision history for this message
Corvus Corax (corvuscorax) wrote :
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Status changed to Confirmed

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Revision history for this message
Corvus Corax (corvuscorax) wrote :

on Obuntu 20 LTS the same bug also exists, but with slightly different symptoms, see bug
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1905994
#1905994

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.