Changeset a35b458 in mainline for kernel/generic/src/security/perm.c
- Timestamp:
- 2018-03-02T20:10:49Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/security/perm.c
r3061bc1 ra35b458 70 70 perm_t perms = task->perms; 71 71 irq_spinlock_unlock(&task->lock, true); 72 72 73 73 return perms; 74 74 } … … 88 88 if (!(perm_get(TASK) & PERM_PERM)) 89 89 return EPERM; 90 90 91 91 irq_spinlock_lock(&tasks_lock, true); 92 92 task_t *task = task_find_by_id(taskid); 93 93 94 94 if ((!task) || (!container_check(CONTAINER, task->container))) { 95 95 irq_spinlock_unlock(&tasks_lock, true); 96 96 return ENOENT; 97 97 } 98 98 99 99 irq_spinlock_lock(&task->lock, false); 100 100 task->perms |= perms; 101 101 irq_spinlock_unlock(&task->lock, false); 102 102 103 103 irq_spinlock_unlock(&tasks_lock, true); 104 104 return EOK; … … 119 119 { 120 120 irq_spinlock_lock(&tasks_lock, true); 121 121 122 122 task_t *task = task_find_by_id(taskid); 123 123 if ((!task) || (!container_check(CONTAINER, task->container))) { … … 125 125 return ENOENT; 126 126 } 127 127 128 128 /* 129 129 * Revoking permissions is different from granting them in that … … 132 132 */ 133 133 irq_spinlock_unlock(&TASK->lock, false); 134 134 135 135 if ((!(TASK->perms & PERM_PERM)) || (task != TASK)) { 136 136 irq_spinlock_unlock(&TASK->lock, false); … … 138 138 return EPERM; 139 139 } 140 140 141 141 task->perms &= ~perms; 142 142 irq_spinlock_unlock(&TASK->lock, false); 143 143 144 144 irq_spinlock_unlock(&tasks_lock, true); 145 145 return EOK; … … 164 164 if (rc != EOK) 165 165 return (sys_errno_t) rc; 166 166 167 167 return perm_grant((task_id_t) taskid, perms); 168 168 } … … 185 185 if (rc != EOK) 186 186 return (sys_errno_t) rc; 187 187 188 188 return perm_revoke((task_id_t) taskid, perms); 189 189 }
Note:
See TracChangeset
for help on using the changeset viewer.