On Wed, Jun 03, 2020 at 05:13:36PM -0700, Linus Torvalds wrote: > On Wed, Jun 3, 2020 at 4:24 PM Christian Brauner > <christian.brauner@xxxxxxxxxx> wrote: > > > > Ok, here's what I have. Does the below look somewhat sane? > > Probably. Needs lots of testing. But this one looks wrong: Right, there's a patch for a test-suite for the new flag too using CLONE_FILES to create a shared fdtable and the proceeds to close all (or subsets of) fds: https://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git/commit/?h=close_range&id=498e7e844fe6e3f3306b2cd1b5e926e1cd394b99 I've been running that in an endless loop for a while. > > > +int __close_range(unsigned fd, unsigned max_fd, unsigned int flags) > > { > > + if ((max_fd + 1) >= cur_max) > > + max_unshare_fds = fd; > > A normal value for "close everything starting at X" would have a > max_fd value of ~0. Ugh, obvious braino from my side. This should just be: if (max_fd >= cur_max) max_unshare_fds = fd; > > So "max_fd+1" would overflow to 0, and then this would never trigger. > > Other than that it looks what what I imagine my feverdreams were about. Thanks! Christian