Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes: > On Mon, Jun 28, 2021 at 3:35 PM Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote: >> >> This is the work mainly by Alexey Gladkov to limit rlimits to the >> rlimits of the user that created a user namespace, and to allow users to >> have stricter limits on the resources created within a user namespace. > > I guess all the performance issues got sorted, since I haven't seen > any reports from the test robots. Yes. The structure was made to not change anything unnecessarily (such as the ordering in sigqueue_alloc) and the performances differences went away. With the code in linux-next the entire cycle I think that is a reliable result. There are probably some things we could do to further optimize things but we did not need them to avoid regressions. > I do end up with two questions, mainly because of looking at the > result of the conflict resolution. > > In particular, in __sigqueue_alloc(), two oddities.. > > Why the "sigpending < LONG_MAX" test in that > > if (override_rlimit || (sigpending < LONG_MAX && sigpending <= > task_rlimit(t, RLIMIT_SIGPENDING))) { > > thing? > And why test for "ucounts" being non-NULL in > > if (ucounts && dec_rlimit_ucounts(ucounts, > UCOUNT_RLIMIT_SIGPENDING, 1)) > put_ucounts(ucounts); > > when afaik both of those should be happy with a NULL 'ucounts' pointer > (if it was NULL, we certainly already used it for the reverse > operations for get_ucounts() and inc_rlimit_ucounts()..) > > Hmm? Yes. I suspect that those tests are left over from a previous version of the change. Alex do you remember why those tests are there? > And somebody should verify that I didn't screw anything up in my merge > resolution. It all looked very straightforward, but mistakes happen.. Just reading through the resolution looks correct. Eric