Re: call_rcu data race patch

Guillaume Morin
2021-09-18T07:08:41Z

On 17 Sep 21:00, Paul E. McKenney wrote:
> That is them! There are some flags that control their activities:
>
> o rcu_data structure's ->nocb_gp_sleep field (rcuog)
> o rcu_data structure's ->nocb_cb_sleep field (rcuoc)

From the same kdump:

crash> pd rcu_data:all | grep -E 'nocb_cb_sleep|nocb_gp_sleep|per_cpu'
per_cpu(rcu_data, 0) = $69 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = false,
per_cpu(rcu_data, 1) = $70 = {
nocb_gp_sleep = 1 '\001',
nocb_cb_sleep = true,
per_cpu(rcu_data, 2) = $71 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 3) = $72 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 4) = $73 = {
nocb_gp_sleep = 1 '\001',
nocb_cb_sleep = true,
per_cpu(rcu_data, 5) = $74 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 6) = $75 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 7) = $76 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 8) = $77 = {
nocb_gp_sleep = 1 '\001',
nocb_cb_sleep = true,
per_cpu(rcu_data, 9) = $78 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 10) = $79 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 11) = $80 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 12) = $81 = {
nocb_gp_sleep = 1 '\001',
nocb_cb_sleep = true,
per_cpu(rcu_data, 13) = $82 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 14) = $83 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 15) = $84 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
per_cpu(rcu_data, 16) = $85 = {
nocb_gp_sleep = 1 '\001',
nocb_cb_sleep = true,
per_cpu(rcu_data, 17) = $86 = {
nocb_gp_sleep = 0 '\000',
nocb_cb_sleep = true,
crash>

--
Guillaume Morin <guillaume@morinfr.org>