On Mon, 2016-03-28 at 14:14 -0700, Kees Cook wrote:

> +static const char *id_str[READING_MAX_ID] = {
> +     [READING_FIRMWARE] = "firmware",
> +     [READING_MODULE] = "kernel module",
> +     [READING_KEXEC_IMAGE] = "kexec image",
> +     [READING_KEXEC_INITRAMFS] = "kexec initramfs",
> +     [READING_POLICY] = "security policy",
> +};
> +
> +static int loadpin_read_file(struct file *file, enum kernel_read_file_id id)
> +{
> +     struct super_block *load_root;
> +     const char *origin;
> +
> +     if (id < 0 || id >= READING_MAX_ID)
> +             return -EINVAL;
> +

The kernel_read_file_id enumeration starts at 1.

> +     origin = id_str[id];
> +     if (!origin) {
> +             origin = "unknown";

Right, all the entries in the kernel_read_file_id enumeration are
currently listed in id_str.  Checking origin is needed for when id_str[]
isn't kept in sync with the enumeration.

Looks good!

Mimi

Reply via email to