Revert "usb: gadget: f_fs: Give chance to retry malloc for large size buffer" 32/268532/1
authorDongwoo Lee <dwoo08.lee@samsung.com>
Fri, 24 Dec 2021 06:23:47 +0000 (15:23 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Fri, 24 Dec 2021 06:24:07 +0000 (15:24 +0900)
This reverts commit 03b14670b1d1f98a70da2306ba68ce089a7a0c27.

Change-Id: I622e8121673eb636669a050fe6933171e3ba1c73
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
drivers/usb/gadget/function/f_fs.c

index 1a05d1f..f3ee55e 100644 (file)
@@ -1012,34 +1012,10 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
                io_data->use_sg = gadget->sg_supported && data_len > PAGE_SIZE;
                spin_unlock_irq(&epfile->ffs->eps_lock);
 
-retry_malloc:
-               data = kmalloc(data_len, GFP_KERNEL | __GFP_NOWARN);
+               data = ffs_alloc_buffer(io_data, data_len);
                if (unlikely(!data)) {
-                       /*
-                        * f_fs daemons usually use large size buffer for
-                        * performance. However, this can cause failure of
-                        * kmalloc() due to buddy fragmentation, even if there
-                        * is available memory and thus it can be compacted by
-                        * by kswapd. Therefore, instead of just returning error
-                        * to daemon in the case of failure of kmalloc(), give
-                        * the second chance to allocate buffer with a half size
-                        * until it really fails due to memory shortage.
-                        */
-                       if (unlikely(data_len <= PAGE_SIZE)) {
-                               ret = -ENOMEM;
-                               goto error_mutex;
-                       }
-
-                       data_len = data_len >> 1;
-
-                       if (io_data->read) {
-                               spin_lock_irq(&epfile->ffs->eps_lock);
-                               data_len = usb_ep_align_maybe(gadget,
-                                               ep->ep, data_len);
-                               spin_unlock_irq(&epfile->ffs->eps_lock);
-                       }
-
-                       goto retry_malloc;
+                       ret = -ENOMEM;
+                       goto error_mutex;
                }
                if (!io_data->read &&
                    !copy_from_iter_full(data, data_len, &io_data->data)) {