Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1641841 > unrolled thread
| Started by | Christoph Hellwig <hch@lst.de> |
|---|---|
| First post | 2017-05-15 17:50 +0200 |
| Last post | 2017-05-15 17:50 +0200 |
| Articles | 6 — 1 participant |
Back to article view | Back to linux.kernel
cleanup UUID types V2 Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
[PATCH 05/17] uuid: add the v1 layout to uuid_t Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
[PATCH 11/17] uuid: remove struct uuid_v1 Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
[PATCH 04/17] uuid: don't export guid_index and uuid_index Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
[PATCH 10/17] afs: switch to use uuid_t and uuid_gen Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
[PATCH 16/17] ima/policy: switch to use uuid_t Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2017-05-15 17:50 +0200 |
| Subject | cleanup UUID types V2 |
| Message-ID | <tHqpX-1AI-3@gated-at.bofh.it> |
Hi all, this series, which is a combined effort from Amir, Andy and me introduces new uuid_t and guid_t type names that are less confusing than the existing types, adds new helpers for them and starts switching the fs code over to it. Andy has additional patches on top to convert many of the users that use char arrays for UUIDs and GUIDs to these (or rather a predecessor for now until updated). Changes since V2: - various cleanups
[toc] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2017-05-15 17:50 +0200 |
| Subject | [PATCH 05/17] uuid: add the v1 layout to uuid_t |
| Message-ID | <tHqpZ-1AI-41@gated-at.bofh.it> |
| In reply to | #1641841 |
Turn the content of uuid_t into a union and add the fields for the v1
interpretation to it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Howells <dhowells@redhat.com>
---
include/uapi/linux/uuid.h | 39 +++++++++++++++++++++++++++++++++------
1 file changed, 33 insertions(+), 6 deletions(-)
diff --git a/include/uapi/linux/uuid.h b/include/uapi/linux/uuid.h
index c31fc94695b9..6b6a583ec1fe 100644
--- a/include/uapi/linux/uuid.h
+++ b/include/uapi/linux/uuid.h
@@ -32,15 +32,42 @@ typedef struct {
(d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
typedef struct {
- __u8 b[16];
+ union {
+ __u8 b[16];
+
+ /*
+ * V1 (time-based) UUID definition [RFC 4122]:
+ * - the timestamp is a 60-bit value, split 32/16/12, and goes
+ * in 100ns increments since midnight 15th October 1582
+ * - add UUID_TO_UNIX_TIME to convert unix time in 100ns
+ * units to UUID time
+ * - the clock sequence is a 14-bit counter to avoid duplicate
+ * times
+ */
+ struct {
+ __be32 time_low;
+ __be16 time_mid;
+ __be16 time_hi_and_version;
+#define UUID_TO_UNIX_TIME 0x01b21dd213814000ULL
+#define UUID_TIMEHI_MASK 0x0fff
+#define UUID_VERSION_TIME 0x1000 /* time-based UUID */
+#define UUID_VERSION_NAME 0x3000 /* name-based UUID */
+#define UUID_VERSION_RANDOM 0x4000 /* (pseudo-)random generated UUID */
+ u8 clock_seq_hi_and_reserved;
+#define UUID_CLOCKHI_MASK 0x3f
+#define UUID_VARIANT_STD 0x80
+ u8 clock_seq_low;
+ u8 node[6];
+ } v1;
+ };
} uuid_t;
-#define UUID(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
-((uuid_t) \
-{{ ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, ((a) >> 8) & 0xff, (a) & 0xff, \
- ((b) >> 8) & 0xff, (b) & 0xff, \
+#define UUID(a, _b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
+{ .b = { \
+ ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, ((a) >> 8) & 0xff, (a) & 0xff, \
+ ((_b) >> 8) & 0xff, (_b) & 0xff, \
((c) >> 8) & 0xff, (c) & 0xff, \
- (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
+ (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }}
/* backwards compatibility, don't use in new code */
typedef guid_t uuid_le;
--
2.11.0
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2017-05-15 17:50 +0200 |
| Subject | [PATCH 11/17] uuid: remove struct uuid_v1 |
| Message-ID | <tHqpZ-1AI-43@gated-at.bofh.it> |
| In reply to | #1641841 |
Unused now.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
include/linux/uuid.h | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/include/linux/uuid.h b/include/linux/uuid.h
index f0e2a645e2bb..3980d5579338 100644
--- a/include/linux/uuid.h
+++ b/include/linux/uuid.h
@@ -19,30 +19,6 @@
#include <uapi/linux/uuid.h>
/*
- * V1 (time-based) UUID definition [RFC 4122].
- * - the timestamp is a 60-bit value, split 32/16/12, and goes in 100ns
- * increments since midnight 15th October 1582
- * - add AFS_UUID_TO_UNIX_TIME to convert unix time in 100ns units to UUID
- * time
- * - the clock sequence is a 14-bit counter to avoid duplicate times
- */
-struct uuid_v1 {
- __be32 time_low; /* low part of timestamp */
- __be16 time_mid; /* mid part of timestamp */
- __be16 time_hi_and_version; /* high part of timestamp and version */
-#define UUID_TO_UNIX_TIME 0x01b21dd213814000ULL
-#define UUID_TIMEHI_MASK 0x0fff
-#define UUID_VERSION_TIME 0x1000 /* time-based UUID */
-#define UUID_VERSION_NAME 0x3000 /* name-based UUID */
-#define UUID_VERSION_RANDOM 0x4000 /* (pseudo-)random generated UUID */
- u8 clock_seq_hi_and_reserved; /* clock seq hi and variant */
-#define UUID_CLOCKHI_MASK 0x3f
-#define UUID_VARIANT_STD 0x80
- u8 clock_seq_low; /* clock seq low */
- u8 node[6]; /* spatially unique node ID (MAC addr) */
-};
-
-/*
* The length of a UUID string ("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")
* not including trailing NUL.
*/
--
2.11.0
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2017-05-15 17:50 +0200 |
| Subject | [PATCH 04/17] uuid: don't export guid_index and uuid_index |
| Message-ID | <tHqpZ-1AI-47@gated-at.bofh.it> |
| In reply to | #1641841 |
These are only used in uuid.c and vsprintf.c and aren't something modules
should use directly.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
lib/uuid.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/uuid.c b/lib/uuid.c
index f80dc63f6ca8..003bf6823003 100644
--- a/lib/uuid.c
+++ b/lib/uuid.c
@@ -22,9 +22,7 @@
#include <linux/random.h>
const u8 guid_index[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15};
-EXPORT_SYMBOL(guid_index);
const u8 uuid_index[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
-EXPORT_SYMBOL(uuid_index);
/***************************************************************
* Random UUID interface
--
2.11.0
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2017-05-15 17:50 +0200 |
| Subject | [PATCH 10/17] afs: switch to use uuid_t and uuid_gen |
| Message-ID | <tHqpZ-1AI-45@gated-at.bofh.it> |
| In reply to | #1641841 |
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Howells <dhowells@redhat.com>
---
fs/afs/cmservice.c | 46 +++++++++++++++++++++++-----------------------
fs/afs/internal.h | 2 +-
fs/afs/main.c | 4 ++--
3 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/fs/afs/cmservice.c b/fs/afs/cmservice.c
index 3062cceb5c2a..d4e77d12570c 100644
--- a/fs/afs/cmservice.c
+++ b/fs/afs/cmservice.c
@@ -350,7 +350,7 @@ static int afs_deliver_cb_init_call_back_state3(struct afs_call *call)
{
struct sockaddr_rxrpc srx;
struct afs_server *server;
- struct uuid_v1 *r;
+ uuid_t *r;
unsigned loop;
__be32 *b;
int ret;
@@ -380,20 +380,20 @@ static int afs_deliver_cb_init_call_back_state3(struct afs_call *call)
}
_debug("unmarshall UUID");
- call->request = kmalloc(sizeof(struct uuid_v1), GFP_KERNEL);
+ call->request = kmalloc(sizeof(uuid_t), GFP_KERNEL);
if (!call->request)
return -ENOMEM;
b = call->buffer;
r = call->request;
- r->time_low = b[0];
- r->time_mid = htons(ntohl(b[1]));
- r->time_hi_and_version = htons(ntohl(b[2]));
- r->clock_seq_hi_and_reserved = ntohl(b[3]);
- r->clock_seq_low = ntohl(b[4]);
+ r->v1.time_low = b[0];
+ r->v1.time_mid = htons(ntohl(b[1]));
+ r->v1.time_hi_and_version = htons(ntohl(b[2]));
+ r->v1.clock_seq_hi_and_reserved = ntohl(b[3]);
+ r->v1.clock_seq_low = ntohl(b[4]);
for (loop = 0; loop < 6; loop++)
- r->node[loop] = ntohl(b[loop + 5]);
+ r->v1.node[loop] = ntohl(b[loop + 5]);
call->offset = 0;
call->unmarshall++;
@@ -453,7 +453,7 @@ static int afs_deliver_cb_probe(struct afs_call *call)
static void SRXAFSCB_ProbeUuid(struct work_struct *work)
{
struct afs_call *call = container_of(work, struct afs_call, work);
- struct uuid_v1 *r = call->request;
+ uuid_t *r = call->request;
struct {
__be32 match;
@@ -476,7 +476,7 @@ static void SRXAFSCB_ProbeUuid(struct work_struct *work)
*/
static int afs_deliver_cb_probe_uuid(struct afs_call *call)
{
- struct uuid_v1 *r;
+ uuid_t *r;
unsigned loop;
__be32 *b;
int ret;
@@ -502,20 +502,20 @@ static int afs_deliver_cb_probe_uuid(struct afs_call *call)
}
_debug("unmarshall UUID");
- call->request = kmalloc(sizeof(struct uuid_v1), GFP_KERNEL);
+ call->request = kmalloc(sizeof(uuid_t), GFP_KERNEL);
if (!call->request)
return -ENOMEM;
b = call->buffer;
r = call->request;
- r->time_low = b[0];
- r->time_mid = htons(ntohl(b[1]));
- r->time_hi_and_version = htons(ntohl(b[2]));
- r->clock_seq_hi_and_reserved = ntohl(b[3]);
- r->clock_seq_low = ntohl(b[4]);
+ r->v1.time_low = b[0];
+ r->v1.time_mid = htons(ntohl(b[1]));
+ r->v1.time_hi_and_version = htons(ntohl(b[2]));
+ r->v1.clock_seq_hi_and_reserved = ntohl(b[3]);
+ r->v1.clock_seq_low = ntohl(b[4]);
for (loop = 0; loop < 6; loop++)
- r->node[loop] = ntohl(b[loop + 5]);
+ r->v1.node[loop] = ntohl(b[loop + 5]);
call->offset = 0;
call->unmarshall++;
@@ -568,13 +568,13 @@ static void SRXAFSCB_TellMeAboutYourself(struct work_struct *work)
memset(&reply, 0, sizeof(reply));
reply.ia.nifs = htonl(nifs);
- reply.ia.uuid[0] = afs_uuid.time_low;
- reply.ia.uuid[1] = htonl(ntohs(afs_uuid.time_mid));
- reply.ia.uuid[2] = htonl(ntohs(afs_uuid.time_hi_and_version));
- reply.ia.uuid[3] = htonl((s8) afs_uuid.clock_seq_hi_and_reserved);
- reply.ia.uuid[4] = htonl((s8) afs_uuid.clock_seq_low);
+ reply.ia.uuid[0] = afs_uuid.v1.time_low;
+ reply.ia.uuid[1] = htonl(ntohs(afs_uuid.v1.time_mid));
+ reply.ia.uuid[2] = htonl(ntohs(afs_uuid.v1.time_hi_and_version));
+ reply.ia.uuid[3] = htonl((s8) afs_uuid.v1.clock_seq_hi_and_reserved);
+ reply.ia.uuid[4] = htonl((s8) afs_uuid.v1.clock_seq_low);
for (loop = 0; loop < 6; loop++)
- reply.ia.uuid[loop + 5] = htonl((s8) afs_uuid.node[loop]);
+ reply.ia.uuid[loop + 5] = htonl((s8) afs_uuid.v1.node[loop]);
if (ifs) {
for (loop = 0; loop < nifs; loop++) {
diff --git a/fs/afs/internal.h b/fs/afs/internal.h
index 393672997cc2..7de45c8686a2 100644
--- a/fs/afs/internal.h
+++ b/fs/afs/internal.h
@@ -544,7 +544,7 @@ extern int afs_drop_inode(struct inode *);
* main.c
*/
extern struct workqueue_struct *afs_wq;
-extern struct uuid_v1 afs_uuid;
+extern uuid_t afs_uuid;
/*
* misc.c
diff --git a/fs/afs/main.c b/fs/afs/main.c
index 51d7d17bca57..75b3d3a8b1ba 100644
--- a/fs/afs/main.c
+++ b/fs/afs/main.c
@@ -31,7 +31,7 @@ static char *rootcell;
module_param(rootcell, charp, 0);
MODULE_PARM_DESC(rootcell, "root AFS cell name and VL server IP addr list");
-struct uuid_v1 afs_uuid;
+uuid_t afs_uuid;
struct workqueue_struct *afs_wq;
/*
@@ -43,7 +43,7 @@ static int __init afs_init(void)
printk(KERN_INFO "kAFS: Red Hat AFS client v0.1 registering.\n");
- generate_random_uuid((unsigned char *)&afs_uuid);
+ uuid_gen(&afs_uuid);
/* create workqueue */
ret = -ENOMEM;
--
2.11.0
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2017-05-15 17:50 +0200 |
| Subject | [PATCH 16/17] ima/policy: switch to use uuid_t |
| Message-ID | <tHqpZ-1AI-53@gated-at.bofh.it> |
| In reply to | #1641841 |
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
security/integrity/ima/ima_policy.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c
index 49fbc3e8f012..da3e7d50e0d7 100644
--- a/security/integrity/ima/ima_policy.c
+++ b/security/integrity/ima/ima_policy.c
@@ -61,7 +61,7 @@ struct ima_rule_entry {
enum ima_hooks func;
int mask;
unsigned long fsmagic;
- u8 fsuuid[16];
+ uuid_t fsuuid;
kuid_t uid;
kuid_t fowner;
bool (*uid_op)(kuid_t, kuid_t); /* Handlers for operators */
@@ -244,7 +244,7 @@ static bool ima_match_rules(struct ima_rule_entry *rule, struct inode *inode,
&& rule->fsmagic != inode->i_sb->s_magic)
return false;
if ((rule->flags & IMA_FSUUID) &&
- memcmp(rule->fsuuid, inode->i_sb->s_uuid, sizeof(rule->fsuuid)))
+ memcmp(&rule->fsuuid, inode->i_sb->s_uuid, sizeof(rule->fsuuid)))
return false;
if ((rule->flags & IMA_UID) && !rule->uid_op(cred->uid, rule->uid))
return false;
@@ -711,13 +711,12 @@ static int ima_parse_rule(char *rule, struct ima_rule_entry *entry)
case Opt_fsuuid:
ima_log_string(ab, "fsuuid", args[0].from);
- if (memchr_inv(entry->fsuuid, 0x00,
- sizeof(entry->fsuuid))) {
+ if (uuid_is_null(&entry->fsuuid)) {
result = -EINVAL;
break;
}
- result = uuid_to_bin(args[0].from, (uuid_t *)&entry->fsuuid);
+ result = uuid_to_bin(args[0].from, &entry->fsuuid);
if (!result)
entry->flags |= IMA_FSUUID;
break;
@@ -1086,7 +1085,7 @@ int ima_policy_show(struct seq_file *m, void *v)
}
if (entry->flags & IMA_FSUUID) {
- seq_printf(m, "fsuuid=%pU", entry->fsuuid);
+ seq_printf(m, "fsuuid=%pU", &entry->fsuuid);
seq_puts(m, " ");
}
--
2.11.0
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web