On Wed, Sep 02, 2020 at 08:15:12AM +0200, Christophe Leroy wrote: >> - return 0; >> - return (size == 0 || size - 1 <= seg.seg - addr); >> + if (addr >= TASK_SIZE_MAX) >> + return false; >> + if (size == 0) >> + return false; > > __access_ok() was returning true when size == 0 up to now. Any reason to > return false now ? No, this is accidental and broken. Can you re-run your benchmark with this fixed?