Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759711AbcDERm0 (ORCPT ); Tue, 5 Apr 2016 13:42:26 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:42395 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1759525AbcDERmW (ORCPT ); Tue, 5 Apr 2016 13:42:22 -0400 Date: Tue, 5 Apr 2016 13:42:20 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Michal Nazarewicz cc: Ivaylo Dimitrov , Tony Lindgren , , , Felipe Balbi , Bin Liu , Subject: Re: [PATCH] usb: f_mass_storage: test whether thread is running before starting another In-Reply-To: <1459877291-28616-1-git-send-email-mina86@mina86.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1169 Lines: 26 On Tue, 5 Apr 2016, Michal Nazarewicz wrote: > When binding the function to usb_configuration, check whether the thread > is running before starting another one. Without that, when function > instance is added to multiple configurations, fsg_bing starts multiple > threads with all but the latest one being forgotten by the driver. This > leads to obvious thread leaks, possible lockups when trying to halt the > machine and possible more issues. > > This fixes issues with legacy/multi¹ gadget as well as configfs gadgets > when mass_storage function is added to multiple configurations. > > This change also simplifies API since the legacy gadgets no longer need > to worry about starting the thread by themselves (which was where bug > in legacy/multi was in the first place). > > ¹ I have no example failure though. Conclusion that legacy/multi has > a bug is based purely on me reading the code. > > Signed-off-by: Michal Nazarewicz This doesn't address the problem I raised in a previous email. Sharing one thread among several function instances in the same config will not work if one of them encounters an error. Alan Stern