From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754445AbbBTNFf (ORCPT ); Fri, 20 Feb 2015 08:05:35 -0500 Received: from mail-pa0-f43.google.com ([209.85.220.43]:33043 "EHLO mail-pa0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754404AbbBTNFa (ORCPT ); Fri, 20 Feb 2015 08:05:30 -0500 Date: Fri, 20 Feb 2015 18:35:24 +0530 From: Tapasweni Pathak To: balbi@ti.com, gregkh@linuxfoundation.org, mina86@mina86.com, r.baldyga@samsung.com, andrzej.p@samsung.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: tapaswenipathak@gmail.com, julia.lawall@lip6.fr Subject: [PATCH] usb: gadget: function: Replace GFP_KERNEL with GFP_ATOMIC Message-ID: <20150220130524.GA22598@kt-Inspiron-3542> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To avoid deadlock, do not call blocking functions with spinlocks held. Replace GFP_KERNEL with GFP_ATOMIC, as the latter will fail if the heap doesn't have enough free pages but will not sleep and hence deadlock can be avoided. Found by Coccinelle. Signed-off-by: Tapasweni Pathak --- Is there any other way this can be fixed as it is better to avoid GFP_ATOMIC? drivers/usb/gadget/function/f_fs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index af98b09..8a25d30 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -823,7 +823,7 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data) } if (io_data->aio) { - req = usb_ep_alloc_request(ep->ep, GFP_KERNEL); + req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC); if (unlikely(!req)) goto error_lock; -- 1.7.9.5