Re: [PATCH] usb: gadget: f_mass_storage: add missing memory barrier for thread_wakeup_needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, 

On Fri, 15 Mar 2013 07:39:02, "Felipe Balbi" <balbi@xxxxxx> wrote:
> Hi,
> 
> On Fri, Mar 15, 2013 at 09:25:28AM +0900, UCHINO Satoshi wrote:
>> Without this memory barrier, the file-storage thread may fail to
>> escape from the following while loop, because it may observe new
>> common->thread_wakeup_needed and old bh->state which are updated by
>> the callback functions.
>> 
>> 	/* Wait for the CBW to arrive */
>> 	while (bh->state != BUF_STATE_FULL) {
>> 		rc = sleep_thread(common);
>> 		if (rc)
>> 			return rc;
>> 	}
>> 
>> Cc: stable@xxxxxxxxxxxxxxx
>> Signed-off-by: UCHINO Satoshi <satoshi.uchino@xxxxxxxxxxxxx>
> 
> make sure to add a proper Cc list when sending patches.
> scripts/get_maintainer.pl would have helped with that. Kepping patch
> below so it's easier for Alan and Michal to read

Thank you for taking care of the cc list.  I did check MAINTAINERS
scripts/get_maintainer.pl but just didn't know I should add Alan and
Michal.

>> ---
>>  drivers/usb/gadget/f_mass_storage.c |    2 ++
>>  1 files changed, 2 insertions(+), 0 deletions(-)
>> 
>> diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
>> index fc5c16c..0b6d351 100644
>> --- a/drivers/usb/gadget/f_mass_storage.c
>> +++ b/drivers/usb/gadget/f_mass_storage.c
>> @@ -414,6 +414,7 @@ static int fsg_set_halt(struct fsg_dev *fsg, struct usb_ep *ep)
>>  static void wakeup_thread(struct fsg_common *common)
>>  {
>>  	/* Tell the main thread that something has happened */
>> +	smp_wmb();
>>  	common->thread_wakeup_needed = 1;
>>  	if (common->thread_task)
>>  		wake_up_process(common->thread_task);
>> @@ -632,6 +633,7 @@ static int sleep_thread(struct fsg_common *common)
>>  	}
>>  	__set_current_state(TASK_RUNNING);
>>  	common->thread_wakeup_needed = 0;
>> +	smp_rmb();
>>  	return rc;
>>  }
>>  
>> -- 
>> 1.7.4.1
>> 
>> 
>> --
>> 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
> 
> -- 
> balbi

- Uchino

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]