Large size request from sdbd usually causes memory allocation failure
in case of memory shortage. The failure is not handled by sdbd
properly and thus it makes sdbd a hung state. To prevent this
situation, this patch limits data buffer size to a single page so as
to guarantee memory allocation success.
* This is WORKAROUND solution for just use case of sdbd, it should be
reverted when the advanced dma solution is applied to f_fs *
Change-Id: Ib917c3aef2b00a3e00a3d87ca6d6940307038aa1
Signed-off-by: Dongwoo <dwoo08.lee@samsung.com>
return -ESHUTDOWN;
}
data_len = iov_iter_count(&io_data->data);
+
+ /*
+ * WORKAROUND:
+ * To prevent memory allocation failure of big size request,
+ * limits data buffer size to a single page.
+ */
+ data_len = (data_len > PAGE_SIZE) ? PAGE_SIZE : data_len;
+
/*
* Controller may require buffer size to be aligned to
* maxpacketsize of an out endpoint.