CRED: Wrap task credential accesses in the block loopback driver
Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: James Morris <jmorris@namei.org> Acked-by: Serge Hallyn <serue@us.ibm.com> Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
parent
350b4da71f
commit
b0fafa816e
|
@ -936,8 +936,10 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct loop_func_table *xfer;
|
struct loop_func_table *xfer;
|
||||||
|
uid_t uid = current_uid();
|
||||||
|
|
||||||
if (lo->lo_encrypt_key_size && lo->lo_key_owner != current->uid &&
|
if (lo->lo_encrypt_key_size &&
|
||||||
|
lo->lo_key_owner != uid &&
|
||||||
!capable(CAP_SYS_ADMIN))
|
!capable(CAP_SYS_ADMIN))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
if (lo->lo_state != Lo_bound)
|
if (lo->lo_state != Lo_bound)
|
||||||
|
@ -992,7 +994,7 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
|
||||||
if (info->lo_encrypt_key_size) {
|
if (info->lo_encrypt_key_size) {
|
||||||
memcpy(lo->lo_encrypt_key, info->lo_encrypt_key,
|
memcpy(lo->lo_encrypt_key, info->lo_encrypt_key,
|
||||||
info->lo_encrypt_key_size);
|
info->lo_encrypt_key_size);
|
||||||
lo->lo_key_owner = current->uid;
|
lo->lo_key_owner = uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue