diff options
Diffstat (limited to 'mm/compaction.c')
| -rw-r--r-- | mm/compaction.c | 13 | 
1 files changed, 5 insertions, 8 deletions
| diff --git a/mm/compaction.c b/mm/compaction.c index fb548e4c7bd4..03d31a875341 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -1999,17 +1999,14 @@ void wakeup_kcompactd(pg_data_t *pgdat, int order, int classzone_idx)  	if (pgdat->kcompactd_max_order < order)  		pgdat->kcompactd_max_order = order; -	/* -	 * Pairs with implicit barrier in wait_event_freezable() -	 * such that wakeups are not missed in the lockless -	 * waitqueue_active() call. -	 */ -	smp_acquire__after_ctrl_dep(); -  	if (pgdat->kcompactd_classzone_idx > classzone_idx)  		pgdat->kcompactd_classzone_idx = classzone_idx; -	if (!waitqueue_active(&pgdat->kcompactd_wait)) +	/* +	 * Pairs with implicit barrier in wait_event_freezable() +	 * such that wakeups are not missed. +	 */ +	if (!wq_has_sleeper(&pgdat->kcompactd_wait))  		return;  	if (!kcompactd_node_suitable(pgdat)) | 
