All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gustavo Padovan <gustavo@padovan.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org,
	dri-devel@lists.freedesktop.org,
	"Daniel Stone" <daniels@collabora.com>,
	"Arve Hjønnevåg" <arve@android.com>,
	"Riley Andrews" <riandrews@android.com>,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>,
	"Rob Clark" <robdclark@gmail.com>,
	"Greg Hackmann" <ghackmann@google.com>,
	"John Harrison" <John.C.Harrison@Intel.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Gustavo Padovan" <gustavo.padovan@collabora.co.uk>
Subject: [PATCH v3 08/11] staging/android: make info->len return only size of sync_fence_info array
Date: Wed,  3 Feb 2016 11:25:37 -0200	[thread overview]
Message-ID: <1454505940-18094-9-git-send-email-gustavo@padovan.org> (raw)
In-Reply-To: <1454505940-18094-1-git-send-email-gustavo@padovan.org>

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

The len member of struct sync_file_info was returning the size of the whole
buffer (struct sync_file_info + sync_fence_infos at the of it). This commit
change it to return only the size of the array of sync_fence_infos.

It also moves len to be right before the sync_fences_info field.

v2: fix check for name field (Maarten)

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c      | 17 ++++++++++++-----
 drivers/staging/android/uapi/sync.h |  7 +++----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index e301b55..d6cf89f 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -502,14 +502,20 @@ static int sync_fill_fence_info(struct fence *fence, void *data, int size)
 static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
 					unsigned long arg)
 {
-	struct sync_file_info *info;
+	struct sync_file_info in, *info;
 	__u32 size;
-	__u32 len = 0;
+	__u32 b_len, len = 0;
 	int ret, i;
 
-	if (copy_from_user(&size, (void __user *)arg, sizeof(size)))
+	if (copy_from_user(&in, (void __user *)arg, sizeof(*info)))
 		return -EFAULT;
 
+	if (in.status || in.num_fences || in.sync_fence_info ||
+	    strcmp(in.name, "\0"))
+		return -EFAULT;
+
+	size = in.len;
+
 	if (size < sizeof(struct sync_file_info))
 		return -EINVAL;
 
@@ -527,8 +533,9 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
 
 	info->num_fences = sync_file->num_fences;
 
-	len = sizeof(struct sync_file_info) - sizeof(__u64);
+	b_len = sizeof(struct sync_file_info) - sizeof(__u64);
 
+	len = b_len;
 	for (i = 0; i < sync_file->num_fences; ++i) {
 		struct fence *fence = sync_file->cbs[i].fence;
 
@@ -540,7 +547,7 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
 		len += ret;
 	}
 
-	info->len = len;
+	info->len = len - b_len;
 
 	if (copy_to_user((void __user *)arg, info, len))
 		ret = -EFAULT;
diff --git a/drivers/staging/android/uapi/sync.h b/drivers/staging/android/uapi/sync.h
index fc7fbcf..4e1d38b 100644
--- a/drivers/staging/android/uapi/sync.h
+++ b/drivers/staging/android/uapi/sync.h
@@ -42,19 +42,18 @@ struct sync_fence_info {
 
 /**
  * struct sync_file_info - data returned from fence info ioctl
- * @len:	ioctl caller writes the size of the buffer its passing in.
- *		ioctl returns length of sync_file_info returned to
- *		userspace including pt_info.
  * @name:	name of fence
  * @status:	status of fence. 1: signaled 0:active <0:error
  * @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.
  * @sync_fence_info: array of sync_fence_info for every fence in the sync_file
  */
 struct sync_file_info {
-	__u32	len;
 	char	name[32];
 	__s32	status;
 	__u32	num_fences;
+	__u32	len;
 
 	__u64	sync_fence_info;
 };
-- 
2.5.0

WARNING: multiple messages have this Message-ID (diff)
From: Gustavo Padovan <gustavo@padovan.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: devel@driverdev.osuosl.org,
	"Daniel Stone" <daniels@collabora.com>,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>,
	"Riley Andrews" <riandrews@android.com>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	"Arve Hjønnevåg" <arve@android.com>,
	"Gustavo Padovan" <gustavo.padovan@collabora.co.uk>,
	"John Harrison" <John.C.Harrison@Intel.com>
Subject: [PATCH v3 08/11] staging/android: make info->len return only size of sync_fence_info array
Date: Wed,  3 Feb 2016 11:25:37 -0200	[thread overview]
Message-ID: <1454505940-18094-9-git-send-email-gustavo@padovan.org> (raw)
In-Reply-To: <1454505940-18094-1-git-send-email-gustavo@padovan.org>

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

The len member of struct sync_file_info was returning the size of the whole
buffer (struct sync_file_info + sync_fence_infos at the of it). This commit
change it to return only the size of the array of sync_fence_infos.

It also moves len to be right before the sync_fences_info field.

v2: fix check for name field (Maarten)

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c      | 17 ++++++++++++-----
 drivers/staging/android/uapi/sync.h |  7 +++----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index e301b55..d6cf89f 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -502,14 +502,20 @@ static int sync_fill_fence_info(struct fence *fence, void *data, int size)
 static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
 					unsigned long arg)
 {
-	struct sync_file_info *info;
+	struct sync_file_info in, *info;
 	__u32 size;
-	__u32 len = 0;
+	__u32 b_len, len = 0;
 	int ret, i;
 
-	if (copy_from_user(&size, (void __user *)arg, sizeof(size)))
+	if (copy_from_user(&in, (void __user *)arg, sizeof(*info)))
 		return -EFAULT;
 
+	if (in.status || in.num_fences || in.sync_fence_info ||
+	    strcmp(in.name, "\0"))
+		return -EFAULT;
+
+	size = in.len;
+
 	if (size < sizeof(struct sync_file_info))
 		return -EINVAL;
 
@@ -527,8 +533,9 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
 
 	info->num_fences = sync_file->num_fences;
 
-	len = sizeof(struct sync_file_info) - sizeof(__u64);
+	b_len = sizeof(struct sync_file_info) - sizeof(__u64);
 
+	len = b_len;
 	for (i = 0; i < sync_file->num_fences; ++i) {
 		struct fence *fence = sync_file->cbs[i].fence;
 
@@ -540,7 +547,7 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
 		len += ret;
 	}
 
-	info->len = len;
+	info->len = len - b_len;
 
 	if (copy_to_user((void __user *)arg, info, len))
 		ret = -EFAULT;
diff --git a/drivers/staging/android/uapi/sync.h b/drivers/staging/android/uapi/sync.h
index fc7fbcf..4e1d38b 100644
--- a/drivers/staging/android/uapi/sync.h
+++ b/drivers/staging/android/uapi/sync.h
@@ -42,19 +42,18 @@ struct sync_fence_info {
 
 /**
  * struct sync_file_info - data returned from fence info ioctl
- * @len:	ioctl caller writes the size of the buffer its passing in.
- *		ioctl returns length of sync_file_info returned to
- *		userspace including pt_info.
  * @name:	name of fence
  * @status:	status of fence. 1: signaled 0:active <0:error
  * @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.
  * @sync_fence_info: array of sync_fence_info for every fence in the sync_file
  */
 struct sync_file_info {
-	__u32	len;
 	char	name[32];
 	__s32	status;
 	__u32	num_fences;
+	__u32	len;
 
 	__u64	sync_fence_info;
 };
-- 
2.5.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2016-02-03 13:26 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-03 13:25 [PATCH v3 00/11] android sync framework: clean up IOCTLs and ABI Gustavo Padovan
2016-02-03 13:25 ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 01/11] staging/android: remove SYNC_WAIT ioctl Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 02/11] staging/android: rename sync_pt_info to sync_fence_info Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 03/11] staging/android: rename sync_file_info_data to sync_file_info Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 04/11] staging/android: remove driver_data from struct sync_fence_info Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 05/11] staging/android: remove len field " Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 06/11] staging/android: turn fence_info into a __u64 pointer Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 14:39   ` Maarten Lankhorst
2016-02-03 14:39     ` Maarten Lankhorst
2016-02-03 20:09     ` Gustavo Padovan
2016-02-03 20:09       ` Gustavo Padovan
2016-02-04  9:57       ` Maarten Lankhorst
2016-02-04  9:57         ` Maarten Lankhorst
2016-02-04 13:05         ` Gustavo Padovan
2016-02-04 13:23           ` Maarten Lankhorst
2016-02-04 13:23             ` Maarten Lankhorst
2016-02-08  9:01     ` Daniel Vetter
2016-02-08  9:01       ` Daniel Vetter
2016-02-03 13:25 ` [PATCH v3 07/11] staging/android: add num_fences field to struct sync_file_info Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` Gustavo Padovan [this message]
2016-02-03 13:25   ` [PATCH v3 08/11] staging/android: make info->len return only size of sync_fence_info array Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 09/11] staging/android: rename SYNC_IOC_FENCE_INFO Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 10/11] staging/android: add flags member to sync ioctl structs Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan
2016-02-03 13:25 ` [PATCH v3 11/11] staging/android: remove redundant comments on sync_merge_data Gustavo Padovan
2016-02-03 13:25   ` Gustavo Padovan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1454505940-18094-9-git-send-email-gustavo@padovan.org \
    --to=gustavo@padovan.org \
    --cc=John.C.Harrison@Intel.com \
    --cc=arve@android.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniels@collabora.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ghackmann@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavo.padovan@collabora.co.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=riandrews@android.com \
    --cc=robdclark@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.