Rev 1787 | Rev 1888 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1787 | Rev 1839 | ||
---|---|---|---|
Line 109... | Line 109... | ||
109 | return (unative_t) rc; |
109 | return (unative_t) rc; |
110 | 110 | ||
111 | ipl = interrupts_disable(); |
111 | ipl = interrupts_disable(); |
112 | spinlock_lock(&tasks_lock); |
112 | spinlock_lock(&tasks_lock); |
113 | t = task_find_by_id((task_id_t) taskid_arg.value); |
113 | t = task_find_by_id((task_id_t) taskid_arg.value); |
114 | if (!t) { |
114 | if ((!t) || (!context_check(CONTEXT, t->context))) { |
115 | spinlock_unlock(&tasks_lock); |
115 | spinlock_unlock(&tasks_lock); |
116 | interrupts_restore(ipl); |
116 | interrupts_restore(ipl); |
117 | return (unative_t) ENOENT; |
117 | return (unative_t) ENOENT; |
118 | } |
118 | } |
119 | 119 | ||
120 | spinlock_lock(&t->lock); |
120 | spinlock_lock(&t->lock); |
121 | cap_set(t, cap_get(t) | caps); |
121 | cap_set(t, cap_get(t) | caps); |
122 | spinlock_unlock(&t->lock); |
122 | spinlock_unlock(&t->lock); |
123 | 123 | ||
124 | spinlock_unlock(&tasks_lock); |
124 | spinlock_unlock(&tasks_lock); |
125 | - | ||
126 | - | ||
127 | - | ||
128 | interrupts_restore(ipl); |
125 | interrupts_restore(ipl); |
129 | return 0; |
126 | return 0; |
130 | } |
127 | } |
131 | 128 | ||
132 | /** Revoke capabilities from a task. |
129 | /** Revoke capabilities from a task. |
Line 151... | Line 148... | ||
151 | return (unative_t) rc; |
148 | return (unative_t) rc; |
152 | 149 | ||
153 | ipl = interrupts_disable(); |
150 | ipl = interrupts_disable(); |
154 | spinlock_lock(&tasks_lock); |
151 | spinlock_lock(&tasks_lock); |
155 | t = task_find_by_id((task_id_t) taskid_arg.value); |
152 | t = task_find_by_id((task_id_t) taskid_arg.value); |
156 | if (!t) { |
153 | if ((!t) || (!context_check(CONTEXT, t->context))) { |
157 | spinlock_unlock(&tasks_lock); |
154 | spinlock_unlock(&tasks_lock); |
158 | interrupts_restore(ipl); |
155 | interrupts_restore(ipl); |
159 | return (unative_t) ENOENT; |
156 | return (unative_t) ENOENT; |
160 | } |
157 | } |
161 | 158 |