diff options
author | Rebecca Schultz Zavin <rebecca@android.com> | 2012-08-08 13:44:11 -0700 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2012-12-04 20:54:18 -0500 |
commit | 46e64043d8498341dc447083687b9dcf16580c00 (patch) | |
tree | 168a80c356465838130adf82817f25f5e2e71f2f | |
parent | 7d025051573d2b9c49c27be88d15ef3a3c518cbc (diff) |
sw_sync: Fix error paths
Check the return value of get_unused_fd to make sure a valid
file descriptor is returned.
Make sure to call put_unused_fd even if an error occurs before
the fd can be used.
Change-Id: Ibbf55caebc2f8ee6a03f298eb0ae0189c7d10b5c
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
-rw-r--r-- | drivers/base/sw_sync.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/base/sw_sync.c b/drivers/base/sw_sync.c index 935769c75427..65d78d4fae8f 100644 --- a/drivers/base/sw_sync.c +++ b/drivers/base/sw_sync.c @@ -169,8 +169,13 @@ long sw_sync_ioctl_create_fence(struct sw_sync_timeline *obj, unsigned long arg) struct sync_fence *fence; struct sw_sync_create_fence_data data; - if (copy_from_user(&data, (void __user *)arg, sizeof(data))) - return -EFAULT; + if (fd < 0) + return fd; + + if (copy_from_user(&data, (void __user *)arg, sizeof(data))) { + err = -EFAULT; + goto err; + } pt = sw_sync_pt_create(obj, data.value); if (pt == NULL) { |