->read_read_unlock_special.b.deferred_qs is set when ->read_read_unlock_special is non-zero, and it is cleared when ->read_read_unlock_special is cleared. So it is useless. Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxxxxx> --- include/linux/sched.h | 2 +- kernel/rcu/tree_plugin.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 2c2e56bd8913..3ba392d71de9 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -604,7 +604,7 @@ union rcu_special { u8 blocked; u8 need_qs; u8 exp_hint; /* Hint for performance. */ - u8 deferred_qs; + u8 pad; /* No garbage from compiler! */ } b; /* Bits. */ u32 s; /* Set of bits. */ }; diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 2fab8be2061f..f2fd7d687bdb 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -622,7 +622,6 @@ static void rcu_read_unlock_special(struct task_struct *t) irq_work_queue_on(&rdp->defer_qs_iw, rdp->cpu); } } - t->rcu_read_unlock_special.b.deferred_qs = true; local_irq_restore(flags); return; } -- 2.20.1