On Thu, May 21, 2026 at 11:57:09PM +0900, Masami Hiramatsu (Google) wrote:
> From: Masami Hiramatsu (Google) <[email protected]>
> 
> Add get_boot_id() to expose current boot ID to other kernel subsystems.
> Note that since this is only meaningful if user can access it via sysctl,
> it returns NULL if CONFIG_SYSCTL=n.

Wouldn't this be nice to have even on !SYSCTL systems? Why disable it for this
case?

> +/**
> + * get_boot_id - return the boot ID UUID
> + *
> + * This function returns a pointer to the boot ID UUID, which is generated on
> + * demand the first time this function is called. The boot ID is a UUID that
> + * is unique to each boot of the system.
> + */
> +const u8 *get_boot_id(void)
> +{
> +     static DEFINE_SPINLOCK(bootid_spinlock);
> +
> +     spin_lock(&bootid_spinlock);
> +     if (!sysctl_bootid[8])
> +             generate_random_uuid(sysctl_bootid);
> +     spin_unlock(&bootid_spinlock);
> +
> +     return sysctl_bootid;
> +}
> +
>  /*
>   * This function is used to return both the bootid UUID, and random
>   * UUID. The difference is in whether table->data is NULL; if it is,
> @@ -1638,12 +1657,8 @@ static int proc_do_uuid(const struct ctl_table *table, 
> int write, void *buf,
>               uuid = tmp_uuid;
>               generate_random_uuid(uuid);
>       } else {
> -             static DEFINE_SPINLOCK(bootid_spinlock);
> -
> -             spin_lock(&bootid_spinlock);
> -             if (!uuid[8])
> -                     generate_random_uuid(uuid);
> -             spin_unlock(&bootid_spinlock);
> +             /* Ensure that the boot ID is initialized. */
> +             get_boot_id();

I find this a little odd, this implicit behavior now that sysctl_bootid ==
uuid. But perhaps that's the cleanest approach there is?

Reply via email to