[CRIU] [PATCH v2 15/24] proc/fd: In proc_readfd_common use task_lookup_next_fd_rcu
Eric W. Biederman
ebiederm at xmission.com
Wed Dec 9 07:24:57 MSK 2020
Al Viro <viro at zeniv.linux.org.uk> writes:
> On Tue, Dec 08, 2020 at 04:38:09PM -0600, Eric W. Biederman wrote:
>
>> Is there any reason we don't simply rcu free the files_struct?
>> That would remove the need for the task_lock entirely.
>
> Umm... Potentially interesting part here is the interaction with
> close_files(); currently that can't overlap with any of those
> 3rd-party accesses to descriptor table, but with your changes
> here it's very much possible.
Good point.
I was worried there might have been a concern about the overhead
introduced by always rcu freeing files table.
> OTOH, it's not like close_files() did much beyond the effects of already
> possible close(2) done by one of the threads sharing that sucker.
> It's _probably_ safe (at least for proc_readfd_common()), but I'll need
> to look at the other places doing that kind of access. Especially the
> BPF foulness...
>
> Oh, and in any case, the trick with repurposing ->rcu of embedded
> fdtable deserves a comment. It's not hard to explain, so...
Agreed. Something like fdtable.rcu isn't used so use it so by reusing
it we keep from wasting memory in files_struct to have a dedicated
rcu_head.
Eric
More information about the CRIU
mailing list