Re: [PATCH 3/3] vmalloc: Add debugfs modfraginfo

From: Jann Horn
Date: Thu Jun 21 2018 - 08:32:58 EST


On Thu, Jun 21, 2018 at 12:12 AM Rick Edgecombe
<rick.p.edgecombe@xxxxxxxxx> wrote:
> Add debugfs file "modfraginfo" for providing info on module space
> fragmentation. This can be used for determining if loadable module
> randomization is causing any problems for extreme module loading situations,
> like huge numbers of modules or extremely large modules.
>
> Sample output when RANDOMIZE_BASE and X86_64 is configured:
> Largest free space: 847253504
> External Memory Fragementation: 20%
> Allocations in backup area: 0
>
> Sample output otherwise:
> Largest free space: 847253504
> External Memory Fragementation: 20%
[...]
> + seq_printf(m, "Largest free space:\t\t%lu\n", largest_free);
> + if (total_free)
> + seq_printf(m, "External Memory Fragementation:\t%lu%%\n",

"Fragmentation"

> + 100-(100*largest_free/total_free));
> + else
> + seq_puts(m, "External Memory Fragementation:\t0%%\n");

"Fragmentation"

[...]
> +static const struct file_operations debug_module_frag_operations = {
> + .open = proc_module_frag_debug_open,
> + .read = seq_read,
> + .llseek = seq_lseek,
> + .release = single_release,
> +};
>
> +static void debug_modfrag_init(void)
> +{
> + debugfs_create_file("modfraginfo", 0x0400, NULL, NULL,
> + &debug_module_frag_operations);

0x0400 is 02000, which is the setgid bit. I think you meant to type 0400?