Re: [patch] staging: android: ion: Fix error handling in ion_query_heaps()

2016-10-12 Thread Laura Abbott

On 10/12/2016 05:49 AM, Dan Carpenter wrote:

copy_to_user() returns the number of bytes remaining to be copied.  We
want to return -EFAULT here instead.  Also there seems like no point
in continuing the loop if copy_to_user() fails.

Fixes: 02b23803c6af ('staging: android: ion: Add ioctl to query available 
heaps')
Signed-off-by: Dan Carpenter 
---
The error handling still might be wrong here.  Do we really want to
change query->cnt?  Please review.

diff --git a/drivers/staging/android/ion/ion.c 
b/drivers/staging/android/ion/ion.c
index 396ded5..4cec0b2 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -1187,8 +1187,10 @@ int ion_query_heaps(struct ion_client *client, struct 
ion_heap_query *query)
hdata.type = heap->type;
hdata.heap_id = heap->id;

-   ret = copy_to_user([cnt],
-  , sizeof(hdata));
+   if (copy_to_user([cnt], , sizeof(hdata))) {
+   ret = -EFAULT;
+   break;
+   }

cnt++;
if (cnt >= max_cnt)



Yeah, I really butchered the error handling on this. You are correct,
query->cnt shouldn't be updated. break can be changed to 'goto out'.

Thanks,
Laura
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[patch] staging: android: ion: Fix error handling in ion_query_heaps()

2016-10-12 Thread Dan Carpenter
copy_to_user() returns the number of bytes remaining to be copied.  We
want to return -EFAULT here instead.  Also there seems like no point
in continuing the loop if copy_to_user() fails.

Fixes: 02b23803c6af ('staging: android: ion: Add ioctl to query available 
heaps')
Signed-off-by: Dan Carpenter 
---
The error handling still might be wrong here.  Do we really want to
change query->cnt?  Please review.

diff --git a/drivers/staging/android/ion/ion.c 
b/drivers/staging/android/ion/ion.c
index 396ded5..4cec0b2 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -1187,8 +1187,10 @@ int ion_query_heaps(struct ion_client *client, struct 
ion_heap_query *query)
hdata.type = heap->type;
hdata.heap_id = heap->id;
 
-   ret = copy_to_user([cnt],
-  , sizeof(hdata));
+   if (copy_to_user([cnt], , sizeof(hdata))) {
+   ret = -EFAULT;
+   break;
+   }
 
cnt++;
if (cnt >= max_cnt)
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel