From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935023AbcJHHAO (ORCPT ); Sat, 8 Oct 2016 03:00:14 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:38488 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934695AbcJHHAM (ORCPT ); Sat, 8 Oct 2016 03:00:12 -0400 Subject: Re: [PATCH 2/2] usb: gadget: f_fs: stop sleeping in ffs_func_eps_disable To: Michal Nazarewicz , Felipe Balbi , John Stultz References: <205cfce1-d54c-262d-f939-ad9f37b0c52c@huawei.com> <1475539654-31945-1-git-send-email-mina86@mina86.com> <1475539654-31945-2-git-send-email-mina86@mina86.com> CC: , Greg KH , "Amit Pundir" , Guodong Xu , , From: Chen Yu Message-ID: Date: Sat, 8 Oct 2016 14:52:31 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1475539654-31945-2-git-send-email-mina86@mina86.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.142.63.192] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016/10/4 8:07, Michal Nazarewicz wrote: > ffs_func_eps_disable is called from atomic context so it cannot sleep > thus cannot grab a mutex. Change the handling of epfile->read_buffer > to use non-sleeping synchronisation method. > > Reported-by: Chen Yu > Signed-off-by: Michał Nazarewicz > Fixes: 9353afbbfa7b ("buffer data from ‘oversized’ OUT requests") > Tested-by: Chen Yu > --- > drivers/usb/gadget/function/f_fs.c | 109 +++++++++++++++++++++++++++++++------ > 1 file changed, 93 insertions(+), 16 deletions(-) > > Compared to the previous version: > • this one has a bit more comments (I feel like it’s a bad sign that > this needs so much documentation); > • ffs_epfile_realese sets read_buffer to READ_BUFFER_DROP (which > doesn’t matter since on entry __ffs_epfile_read_buffered behaves > the same way when read_buffer is NULL or READ_BUFFER_DROP); and > • __ffs_epfile_read_data will drop the temporary data if read_buffer > is READ_BUFFER_DROP (which may happen if ep is disabled between ep > request finishes and data is copied to user space). > > Chen, John, if you could test this version as well, that would be > swell. > for both patches: Tested-by: Chen Yu thanks again! Chen Yu