112,10 → 112,15 |
interrupts_restore(ipl); |
return (__native) ENOENT; |
} |
spinlock_unlock(&tasks_lock); |
|
spinlock_lock(&t->lock); |
cap_set(t, cap_get(t) | caps); |
spinlock_unlock(&t->lock); |
|
spinlock_unlock(&tasks_lock); |
|
|
|
interrupts_restore(ipl); |
return 0; |
} |
149,7 → 154,6 |
interrupts_restore(ipl); |
return (__native) ENOENT; |
} |
spinlock_unlock(&tasks_lock); |
|
/* |
* Revoking capabilities is different from granting them in that |
157,12 → 161,17 |
* doesn't have CAP_CAP. |
*/ |
if (!(cap_get(TASK) & CAP_CAP) || !(t == TASK)) { |
spinlock_unlock(&tasks_lock); |
interrupts_restore(ipl); |
return (__native) EPERM; |
} |
|
spinlock_lock(&t->lock); |
cap_set(t, cap_get(t) & ~caps); |
spinlock_unlock(&t->lock); |
|
cap_set(t, cap_get(t) & ~caps); |
|
spinlock_unlock(&tasks_lock); |
|
interrupts_restore(ipl); |
return 0; |
} |