Re: [RFC] vfs: don't bother clearing close_on_exec bit for unused fds

From: Eric Dumazet
Date: Wed Nov 04 2015 - 07:33:36 EST

On Wed, 2015-11-04 at 11:59 +0100, Rasmus Villemoes wrote:

> @@ -667,10 +665,9 @@ void do_close_on_exec(struct files_struct *files)
> fdt = files_fdtable(files);
> if (fd >= fdt->max_fds)
> break;
> - set = fdt->close_on_exec[i];
> + set = fdt->close_on_exec[i] & fdt->open_fds[i];
> if (!set)
> continue;

Many processes have a big hole at the end of fdt->open_fds[], due
to the fact that max_fds is rounded to a power of two.

It makes sense to avoid bringing in cpu caches the close_on_exec[] part.

set = fdt->open_fds[i];
if (!set)
set &= fdt->close_on_exec[i];
if (!set)

Not sure if this is a net win due to branch prediction...

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at