From: Andy Shevchenko <andriy.shevche...@linux.intel.com>

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.shevche...@linux.intel.com>
[ash: changed back to uuid_t and updated the commit message]
Signed-off-by: Alexander Shishkin <alexander.shish...@linux.intel.com>
---
 drivers/hwtracing/stm/p_sys-t.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/hwtracing/stm/p_sys-t.c b/drivers/hwtracing/stm/p_sys-t.c
index 360b5c03df95..8254971c02e7 100644
--- a/drivers/hwtracing/stm/p_sys-t.c
+++ b/drivers/hwtracing/stm/p_sys-t.c
@@ -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;
 
-- 
2.30.2

Reply via email to