Re: [PATCH] exit: Allow oops_limit to be disabled

From: Kees Cook
Date: Fri Dec 16 2022 - 15:33:01 EST


On Fri, Dec 16, 2022 at 03:05:13PM +0100, Peter Zijlstra wrote:
> On Fri, Dec 02, 2022 at 01:06:21PM -0800, Kees Cook wrote:
>
> > --- a/kernel/exit.c
> > +++ b/kernel/exit.c
> > @@ -954,7 +954,7 @@ void __noreturn make_task_dead(int signr)
> > * To make sure this can't happen, place an upper bound on how often the
> > * kernel may oops without panic().
> > */
> > - if (atomic_inc_return(&oops_count) >= READ_ONCE(oops_limit))
> > + if (atomic_inc_return(&oops_count) >= READ_ONCE(oops_limit) && oops_limit)
> > panic("Oopsed too often (kernel.oops_limit is %d)", oops_limit);
> >
>
> That's dodgy, please write as:
>
> limit = READ_ONCE(oops_limit);
> if (atomic_inc_return(&oops_count) >= limit && limit)
>
> So we don't explicitly add a reload that negates the whole READ_ONCE().

Yup, that's more correct. Sent:
https://lore.kernel.org/lkml/20221216203024.never.640-kees@xxxxxxxxxx

--
Kees Cook