stm class: Use correct UUID APIs
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 15 Apr 2021 09:15:55 +0000 (12:15 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Apr 2021 05:26:50 +0000 (07:26 +0200)
It appears that the STM code didn't manage to accurately decypher the
delicate inner workings of an alternative thought process behind the
UUID API and directly called generate_random_uuid() that clearly needs
to be a static function in lib/uuid.c.

At the same time, said STM code is poking directly at the byte array
inside the uuid_t when it uses the UUID for its internal purposes.

Fix these two transgressions by using intended APIs instead.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
[ash: changed back to uuid_t and updated the commit message]
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Link: https://lore.kernel.org/r/20210415091555.88085-1-alexander.shishkin@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwtracing/stm/p_sys-t.c

index 360b5c03df95b87e600843340ae24d6cfb9f0b99..8254971c02e70eec9fd4dad08824a0bfa8cb4ae3 100644 (file)
@@ -92,7 +92,7 @@ static void sys_t_policy_node_init(void *priv)
 {
        struct sys_t_policy_node *pn = priv;
 
-       generate_random_uuid(pn->uuid.b);
+       uuid_gen(&pn->uuid);
 }
 
 static int sys_t_output_open(void *priv, struct stm_output *output)
@@ -292,6 +292,7 @@ static ssize_t sys_t_write(struct stm_data *data, struct stm_output *output,
        unsigned int m = output->master;
        const unsigned char nil = 0;
        u32 header = DATA_HEADER;
+       u8 uuid[UUID_SIZE];
        ssize_t sz;
 
        /* We require an existing policy node to proceed */
@@ -322,7 +323,8 @@ static ssize_t sys_t_write(struct stm_data *data, struct stm_output *output,
                return sz;
 
        /* GUID */
-       sz = stm_data_write(data, m, c, false, op->node.uuid.b, UUID_SIZE);
+       export_uuid(uuid, &op->node.uuid);
+       sz = stm_data_write(data, m, c, false, uuid, sizeof(op->node.uuid));
        if (sz <= 0)
                return sz;