summaryrefslogtreecommitdiff
authorXiaoliang Wang <xiaoliang.wang@amlogic.com>2018-10-18 11:28:18 (GMT)
committer Gerrit Code Review <gituser@droid04>2018-10-18 11:28:18 (GMT)
commit8d856ee04e7fcc5719bfaf078d0b3bb788827c90 (patch)
tree5b6012c3a5ebcfab14326c482f5c70ca7bdc360f
parentfb2d66885130e7af3dafdfa1fd433c7709f07573 (diff)
parentea36cc268d75799a5e75b9478918d92d17b28f86 (diff)
downloadcommon-8d856ee04e7fcc5719bfaf078d0b3bb788827c90.zip
common-8d856ee04e7fcc5719bfaf078d0b3bb788827c90.tar.gz
common-8d856ee04e7fcc5719bfaf078d0b3bb788827c90.tar.bz2
Merge "usb: adb reboot and then adb disconnect[1/1]" into p-amlogic
Diffstat
-rw-r--r--drivers/usb/gadget/function/f_fs.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 055c03a..cb76db3 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -848,7 +848,9 @@ static void ffs_user_copy_worker(struct work_struct *work)
if (io_data->read)
kfree(io_data->to_free);
+#ifndef CONFIG_AMLOGIC_USB
kfree(io_data->buf);
+#endif
kfree(io_data);
}
@@ -952,7 +954,6 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
#ifdef CONFIG_AMLOGIC_USB
struct ffs_ep *ep = epfile->ep;
struct ffs_data_buffer *buffer = NULL;
- int data_flag = -1;
#else
struct ffs_ep *ep;
#endif
@@ -1034,15 +1035,6 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
goto error_mutex;
}
#else
- if (io_data->aio) {
- spin_unlock_irq(&epfile->ffs->eps_lock);
- data = kmalloc(data_len, GFP_KERNEL);
- data_flag = 1;
- if (unlikely(!data)) {
- ret = -ENOMEM;
- goto error_mutex;
- }
- } else {
/* Fire the request */
/*
* Avoid kernel panic caused by race condition. For example,
@@ -1060,9 +1052,9 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
* To avoid this, during FunctionFS mount, we allocated the
* data buffer for requests. And the memory resources has
* been released in kill_sb.
+ *reboot adb disconnect,so buffer aways used assign_ffs_buffer.
*/
buffer = assign_ffs_buffer(epfile->ffs);
- data_flag = -1;
if (unlikely(!buffer)) {
ret = -ENOMEM;
spin_unlock_irq(&epfile->ffs->eps_lock);
@@ -1071,7 +1063,6 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
data = buffer->data_ep;
spin_unlock_irq(&epfile->ffs->eps_lock);
- }
#endif
if (!io_data->read &&
@@ -1177,13 +1168,8 @@ error_mutex:
mutex_unlock(&epfile->mutex);
error:
#ifdef CONFIG_AMLOGIC_USB
- if (data_flag > 0) {
- kfree(data);
- data = NULL;
- } else {
- if (buffer)
- release_ffs_buffer(epfile->ffs, buffer);
- }
+ if (buffer)
+ release_ffs_buffer(epfile->ffs, buffer);
#else
kfree(data);
#endif