On 05/17/2013 02:53 PM, Benjamin LaHaise wrote: > On Fri, May 17, 2013 at 02:23:54PM -0400, Sasha Levin wrote: >> Commit "aio: percpu reqs_available" added some math to the nr_requests >> calculation, but didn't correct the overflow calculations to handle that. >> >> This means that this: >> >> #include <linux/aio_abi.h> >> void main(void) >> { >> aio_context_t ctx_idp; >> io_setup(0x80000001, &ctx_idp); >> } >> >> Would trigger the newly added BUG() couple of lines after the overflow >> checks. > > This BUG() isn't in Linus' tree, and probably should be removed before > it gets there. It's not, it's in -next though. >> Signed-off-by: Sasha Levin <sasha.levin@xxxxxxxxxx> >> --- >> fs/aio.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/fs/aio.c b/fs/aio.c >> index 5b7ed78..0ae450a 100644 >> --- a/fs/aio.c >> +++ b/fs/aio.c >> @@ -411,7 +411,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) >> >> /* Prevent overflows */ >> if ((nr_events > (0x10000000U / sizeof(struct io_event))) || >> - (nr_events > (0x10000000U / sizeof(struct kiocb)))) { >> + (nr_events > (0x10000000U / sizeof(struct kiocb))) || >> + (nr_events < num_possible_cpus() * 4)) { >> pr_debug("ENOMEM: nr_events too high\n"); >> return ERR_PTR(-EINVAL); > > This is completely wrong. Enforcing a minimum needs to be done in a way > that doesn't fail for existing users that potentially use a minimum > smaller than what is newly required. That is: an existing userland program > that only requests 16 events must not fail because of changes to the kernel > that increase the minimum number of requests. So I have to NACK this patch > as it stands. You didn't look around the context of the patch. Couple of lines before that check, this happens: nr_events = max(nr_events, num_possible_cpus() * 4); nr_events *= 2; The check I've added would only make sense if nr_events wrapped around, not if nr_events was originally smaller than (num_possible_cpus() * 4). Thanks, Sasha -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html