[PATCH] usb: gadget: function: Replace GFP_KERNEL with GFP_ATOMIC

2015-02-20 Thread Tapasweni Pathak
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 tapaswenipat...@gmail.com
---
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

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


Re: [PATCH] usb: gadget: function: Replace GFP_KERNEL with GFP_ATOMIC

2015-02-20 Thread Michal Nazarewicz
On Fri, Feb 20 2015, Tapasweni Pathak wrote:
 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 tapaswenipat...@gmail.com
 ---
 Is there any other way this can be fixed as it is better to avoid GFP_ATOMIC?

I think there is.  A patchset will follow this reply.

  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;


-- 
Best regards, _ _
.o. | Liege of Serenely Enlightened Majesty of  o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz(o o)
ooo +--m...@google.com--xmpp:min...@jabber.org--ooO--(_)--Ooo--
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html