On Fri, Oct 27, 2017 at 02:23:07PM +0530, Neeraj Upadhyay wrote:
> Hi,
> 
> One query regarding srcu_funnel_exp_start() function in
> kernel/rcu/srcutree.c.
> 
> static void srcu_funnel_exp_start(struct srcu_struct *sp, struct
> srcu_node *snp,
>                                 unsigned long s)
> {
>       <snip>
>       if (!ULONG_CMP_LT(sp->srcu_gp_seq_needed_exp, s))
>               sp->srcu_gp_seq_needed_exp = s;
>       <snip>
> }
> 
> Why is sp->srcu_gp_seq_needed_exp set to 's' if srcu_gp_seq_needed_exp is >=
> 's'. Shouldn't srcu_gp_seq_needed_exp be equal to the greater of both?

Let's suppose that it is incorrect as currently written.  Can you
construct a test case demonstrating a failure of some sort, then provide
a fix?

To start with, if it is currently incorrect, what would be the nature
of the failure?

                                                        Thanx, Paul

Reply via email to