On Mon, Jun 28, 2021 at 08:47:12PM -0700, Linus Torvalds wrote: > 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. > > 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? inc_rlimit_ucounts() returns long and uses LONG_MAX as an overflow flag. At the same time, we have increased the size of sigpending from int to long. > 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()..) The get_ucount() can theoretically return NULL. It increments the reference counter and if it overflows, the function will return NULL. > Hmm? > > And somebody should verify that I didn't screw anything up in my merge > resolution. It all looked very straightforward, but mistakes happen.. -- Rgrds, legion