RE: [PATCH] proc: report open files as size in stat() for /proc/pid/fd

From: David Laight
Date: Wed Sep 21 2022 - 06:21:42 EST


From: Ivan Babrou
> Sent: 20 September 2022 20:06
...
>
> +static int proc_readfd_count(struct inode *inode)
> +{
> + struct task_struct *p = get_proc_task(inode);
> + struct fdtable *fdt;
> + unsigned int i, size, open_fds = 0;
> +
> + if (!p)
> + return -ENOENT;
> +
> + if (p->files) {
> + fdt = files_fdtable(p->files);
> + size = fdt->max_fds;
> +
> + for (i = size / BITS_PER_LONG; i > 0;)
> + open_fds += hweight64(fdt->open_fds[--i]);
> + }
> +
> + return open_fds;
> +}
> +

Doesn't that need (at least) rcu protection?
There might also be issues reading p->files twice.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)