From 6fe9f08fa62a76be3f6fa546f9e1981672a5a94a Mon Sep 17 00:00:00 2001 From: David Howells Date: Fri, 14 Nov 2008 10:38:41 +1100 Subject: [PATCH] --- yaml --- r: 120664 b: refs/heads/master c: b0fafa816ece0080771355de6158b4dfa8531a95 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/block/loop.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index aac65d49ff13..e5e3cab16de4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 350b4da71f8326b9319ada7b701f2bce2e1285b7 +refs/heads/master: b0fafa816ece0080771355de6158b4dfa8531a95 diff --git a/trunk/drivers/block/loop.c b/trunk/drivers/block/loop.c index 5c4ee70d5cf3..fb06ed659212 100644 --- a/trunk/drivers/block/loop.c +++ b/trunk/drivers/block/loop.c @@ -936,8 +936,10 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info) { int err; 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)) return -EPERM; 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) { memcpy(lo->lo_encrypt_key, info->lo_encrypt_key, info->lo_encrypt_key_size); - lo->lo_key_owner = current->uid; + lo->lo_key_owner = uid; } return 0;