+       /* Make little endian */
+       tmp32 = (uint32_t *)&guid->b[0];
+       *tmp32 = be32_to_cpu(*tmp32);
+       tmp16 = (uint16_t *)&guid->b[4];
+       *tmp16 = be16_to_cpu(*tmp16);
+       tmp16 = (uint16_t *)&guid->b[6];
+       *tmp16 = be16_to_cpu(*tmp16);

you need to explicitly convert those to LE, instead of relying to the
native cpu endianess here

The EFI spec iirc is not explicit on the binary format for GUIDs on big endian systems (and currently doesn't support them at all??). Is LE always correct??

cheers
/Ilias
+}
+
  #if defined(CONFIG_RANDOM_UUID) || defined(CONFIG_CMD_UUID)
  void gen_rand_uuid(unsigned char *uuid_bin)
  {
         u32 ptr[4];
@@ -394,15 +444,9 @@ void gen_rand_uuid(unsigned char *uuid_bin)
         /* Set all fields randomly */
         for (i = 0; i < 4; i++)
                 ptr[i] = rand();

-       clrsetbits_be16(&uuid->time_hi_and_version,
-                       UUID_VERSION_MASK,
-                       UUID_VERSION << UUID_VERSION_SHIFT);
-
-       clrsetbits_8(&uuid->clock_seq_hi_and_reserved,
-                    UUID_VARIANT_MASK,
-                    UUID_VARIANT << UUID_VARIANT_SHIFT);
+       configure_uuid(uuid, UUID_VERSION);

         memcpy(uuid_bin, uuid, 16);
  }


--
2.45.2


--
// Caleb (they/them)

Reply via email to