diff options
author | Varun Wadekar <vwadekar@nvidia.com> | 2013-07-02 12:56:15 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 13:34:24 -0700 |
commit | f66557b7567de9011bbe0416e6e7a9adf2dba0bf (patch) | |
tree | 85c56f58b8497daaae5ad42849e1a8f26620d6d9 /security/tlk_driver | |
parent | effef64525b96b3b5b871a19dfe068cd865eb09c (diff) |
security: tlk_driver: return failure for IOCTL_FILE_NEW_REQ during suspend
The user space daemon will retry 3 times whenever it receives errors for new
requests.
Bug 1314244
Change-Id: I57f1740d7b24d2f3f3f97e7e83a5434f54d05bdb
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-on: http://git-master/r/244187
(cherry picked from commit 639efa238a01be8fd9debf4c8511c9eac942fc46)
Reviewed-on: http://git-master/r/249874
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Aaron Gamble <jgamble@nvidia.com>
Diffstat (limited to 'security/tlk_driver')
-rw-r--r-- | security/tlk_driver/ote_fs.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/security/tlk_driver/ote_fs.c b/security/tlk_driver/ote_fs.c index 716d004f68bb..4c9997ac4d35 100644 --- a/security/tlk_driver/ote_fs.c +++ b/security/tlk_driver/ote_fs.c @@ -21,7 +21,6 @@ #include <linux/list.h> #include <linux/completion.h> #include <linux/workqueue.h> -#include <linux/freezer.h> #include <linux/bitops.h> #include <linux/uaccess.h> @@ -63,13 +62,13 @@ int te_handle_fs_ioctl(struct file *file, unsigned int ioctl_num, ptr_user_req = (struct te_file_req *)ioctl_param; - set_freezable(); - set_bit(TE_FS_READY_BIT, &fs_ready); /* wait for a new request */ - while (wait_for_completion_interruptible(&req_ready)) - try_to_freeze(); + if (wait_for_completion_interruptible(&req_ready)) { + clear_bit(TE_FS_READY_BIT, &fs_ready); + return -ENODATA; + } /* dequeue new request from the secure world */ req_node = list_first_entry(&req_list, struct te_file_req_node, @@ -181,11 +180,8 @@ static void _te_fs_file_operation(const char *name, void *buf, int len, list_add_tail(&req_list, &req_node->node); complete(&req_ready); - set_freezable(); - /* wait for the consumer's signal */ - while (wait_for_completion_interruptible(&req_complete)) - try_to_freeze(); + wait_for_completion(&req_complete); kfree(new_req); |