forked from Minki/linux
srcu: Prevent sdp->srcu_gp_seq_needed_exp counter wrap
SRCU checks each srcu_data structure's grace-period number for counter wrap four times per cycle by default. This frequency guarantees that normal comparisons will detect potential wrap. However, the expedited grace-period number is not checked. The consquences are not too horrible (a failure to expedite a grace period when requested), but it would be good to avoid such things. This commit therefore adds this check to the expedited grace-period number. Signed-off-by: Ildar Ismagilov <devix84@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
cb4081cd4e
commit
a35d13ec36
@ -579,6 +579,9 @@ static void srcu_gp_end(struct srcu_struct *sp)
|
|||||||
if (ULONG_CMP_GE(gpseq,
|
if (ULONG_CMP_GE(gpseq,
|
||||||
sdp->srcu_gp_seq_needed + 100))
|
sdp->srcu_gp_seq_needed + 100))
|
||||||
sdp->srcu_gp_seq_needed = gpseq;
|
sdp->srcu_gp_seq_needed = gpseq;
|
||||||
|
if (ULONG_CMP_GE(gpseq,
|
||||||
|
sdp->srcu_gp_seq_needed_exp + 100))
|
||||||
|
sdp->srcu_gp_seq_needed_exp = gpseq;
|
||||||
spin_unlock_irqrestore_rcu_node(sdp, flags);
|
spin_unlock_irqrestore_rcu_node(sdp, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user