[ +CC: Oliver ] On Tue, Apr 08, 2014 at 12:22:29PM +0100, One Thousand Gnomes wrote: > > (2) acm tty port ASYNCB_INITIALIZED flag will be cleared when > > close. If acm resume callback run after ASYNCB_INITIALIZED flag > > cleared, there will have no chance for delayed write to start. > > That lead to acm_wb.use can't be cleared. If user space open > > acm tty again and try to setd, tty will be blocked in > > tty_wait_until_sent for ever. > > If there is data pending when the close occurs the close path should > block until either the close timeout occurs or the buffer is written. > This sounds more like the implementation of the ACM chars_in_buffer > method is wrong and not counting the deferred bytes as unsent ? The ACM chars_in_buffer does count the deferred bytes so I guess this can only happen if close happens fast enough that resume is never called before shutdown (e.g. closing_wait = ASYNC_CLOSING_WAIT_NONE and drain_delay = 0). Johan -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html