@@ -445,6 +445,11 @@ static long sync_file_ioctl_merge(struct sync_file *sync_file,
goto err_put_fd;
}
+ if (data.flags) {
+ err = -EFAULT;
+ goto err_put_fd;
+ }
+
fence2 = sync_file_fdget(data.fd2);
if (!fence2) {
err = -ENOENT;
@@ -510,7 +515,7 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
if (copy_from_user(&in, (void __user *)arg, sizeof(*info)))
return -EFAULT;
- if (in.status || in.num_fences || in.sync_fence_info ||
+ if (in.status || in.flags || in.num_fences || in.sync_fence_info ||
strcmp(in.name, "\0"))
return -EFAULT;
@@ -19,11 +19,13 @@
* @fd2: file descriptor of second fence
* @name: name of new fence
* @fence: returns the fd of the new fence to userspace
+ * @flags: merge_data flags
*/
struct sync_merge_data {
__s32 fd2; /* fd of second fence */
char name[32]; /* name of new fence */
__s32 fence; /* fd on newly created fence */
+ __u32 flags;
};
/**
@@ -31,12 +33,14 @@ struct sync_merge_data {
* @obj_name: name of parent sync_timeline
* @driver_name: name of driver implementing the parent
* @status: status of the fence 0:active 1:signaled <0:error
+ * @flags: fence_info flags
* @timestamp_ns: timestamp of status change in nanoseconds
*/
struct sync_fence_info {
char obj_name[32];
char driver_name[32];
__s32 status;
+ __u32 flags;
__u64 timestamp_ns;
};
@@ -44,6 +48,7 @@ struct sync_fence_info {
* struct sync_file_info - data returned from fence info ioctl
* @name: name of fence
* @status: status of fence. 1: signaled 0:active <0:error
+ * @flags: sync_file_info flags
* @num_fences number of fences in the sync_file
* @len: ioctl caller writes the size of the buffer its passing in.
* ioctl returns length of all fence_infos summed.
@@ -52,6 +57,7 @@ struct sync_fence_info {
struct sync_file_info {
char name[32];
__s32 status;
+ __u32 flags;
__u32 num_fences;
__u32 len;