On Tue, Apr 19, 2022 at 02:54:08PM +0800, Hongyu Xie wrote:
From: Hongyu Xie xiehongyu1@kylinos.cn
pl2303.c doesn't have reset_resume for hibernation. So needs_binding will be set to 1 duiring hibernation. usb_forced_unbind_intf will be called, and the port minor will be released (x in ttyUSBx).
Please use the full 72 columns that you are allowed in a changelog text.
It works fine if you have only one USB-to-serial device. Assume you have 2 USB-to-serial device, nameing A and B. A gets a smaller minor(ttyUSB0), B gets a bigger one. And start to hibernate. When your PC is in hibernation, unplug device A. Then wake up your PC by pressing the power button. After waking up the whole system, device B gets ttyUSB0. This will casuse a problem if you were using those to ports(like opened two minicom process) before hibernation. So member reset_resume is needed in usb_serial_driver pl2303_device.
If you want persistent device naming, use the symlinks that udev creates for your for all your serial devices. Never rely on the number of a USB to serial device.
Codes in pl2303_reset_resume are borrowed from pl2303_open.
As a matter of fact, all driver under drivers/usb/serial has the same problem except ch341.c.
Cc: stable@vger.kernel.org
How does this meet the stable kernel rule requirements? It would be a new feature if it were accepted, right?
thanks,
greg k-h