Re: [PATCH tip/core/rcu 02/19] rcu: Defer reporting RCU-preempt quiescent states when disabled

From: Paul E. McKenney
Date: Mon Nov 26 2018 - 14:00:40 EST


On Mon, Nov 26, 2018 at 01:55:37PM +0000, Ran Rozenstein wrote:
> >
> > Hearing no objections, here is the updated patch.
> >
> > Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > commit 970cab5d3d206029ed27274a98ea1c3d7e780e53
> > Author: Paul E. McKenney <paulmck@xxxxxxxxxxxxx>
> > Date: Mon Oct 29 07:36:50 2018 -0700
> >
> > rcu: Avoid signed integer overflow in rcu_preempt_deferred_qs()
> >
> > Subtracting INT_MIN can be interpreted as unconditional signed integer
> > overflow, which according to the C standard is undefined behavior.
> > Therefore, kernel build arguments notwithstanding, it would be good to
> > future-proof the code. This commit therefore substitutes INT_MAX for
> > INT_MIN in order to avoid undefined behavior.
> >
> > While in the neighborhood, this commit also creates some meaningful
> > names
> > for INT_MAX and friends in order to improve readability, as suggested
> > by Joel Fernandes.
> >
> > Reported-by: Ran Rozenstein <ranro@xxxxxxxxxxxx>
> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxx>
> >
> > squash! rcu: Avoid signed integer overflow in rcu_preempt_deferred_qs()
> >
> > While in the neighborhood, use macros to give meaningful names.
> >
> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxx>
>
> Hi,
>
> What is the acceptance status of this patch?

It is queued in -rcu. If no problems arise beforehand, I intend to submit
it as part of a pull request into -tip, which (again if no problems arise)
be pulled into mainline during the next merge window.

Oddly enough, a couple of weeks ago the C++ Standards Committee voted
in a proposal for C++20 removing undefined behavior for signed integer
overflow. This is C++ rather than C, and C must support additional
hardware that wouldn't much like forcing twos complement for signed
integer overflow. But still... ;-)

Thanx, Paul