mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
usb: gadget: mtp: add new ioctl for compat
Define a new ioctl for MTP_SEND_EVENT, as its ioctl numbers depends on the size of struct mtp_event, which varies in ARCH32 and ARCH64. Bug 1466403 Change-Id: I1d172aae422ca483b00c6dd59e739166f40c53ce Signed-off-by: Rohith Seelaboyina <rseelaboyina@nvidia.com> Reviewed-on: http://git-master/r/377800 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
This commit is contained in:
committed by
Huang, Tao
parent
0c278cf19c
commit
1aab3d20ef
@@ -938,6 +938,25 @@ static long mtp_ioctl(struct file *fp, unsigned code, unsigned long value)
|
||||
ret = mtp_send_event(dev, &event);
|
||||
goto out;
|
||||
}
|
||||
#ifdef CONFIG_COMPAT
|
||||
case MTP_SEND_EVENT_32:
|
||||
{
|
||||
struct mtp_event_32 event_32;
|
||||
struct mtp_event event;
|
||||
/* return here so we don't change dev->state below,
|
||||
* which would interfere with bulk transfer state.
|
||||
*/
|
||||
if (copy_from_user(&event_32, (void __user *)value,
|
||||
sizeof(event_32)))
|
||||
ret = -EFAULT;
|
||||
else {
|
||||
event.length = event_32.length;
|
||||
event.data = (void *)(unsigned long)event_32.data;
|
||||
ret = mtp_send_event(dev, &event);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
fail:
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
* Copyright (C) 2010 Google, Inc.
|
||||
* Author: Mike Lockwood <lockwood@android.com>
|
||||
*
|
||||
* Copyright (C) 2014, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
@@ -45,6 +47,17 @@ struct mtp_event {
|
||||
void *data;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
struct mtp_event_32 {
|
||||
/* size of the event */
|
||||
compat_size_t length;
|
||||
/* event data to send */
|
||||
compat_uptr_t data;
|
||||
};
|
||||
|
||||
#define MTP_SEND_EVENT_32 _IOW('M', 3, struct mtp_event_32)
|
||||
#endif
|
||||
|
||||
/* Sends the specified file range to the host */
|
||||
#define MTP_SEND_FILE _IOW('M', 0, struct mtp_file_range)
|
||||
/* Receives data from the host and writes it to a file.
|
||||
|
||||
Reference in New Issue
Block a user