diff options
Diffstat (limited to 'drivers/misc/sgi-gru/grutlbpurge.c')
-rw-r--r-- | drivers/misc/sgi-gru/grutlbpurge.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/misc/sgi-gru/grutlbpurge.c b/drivers/misc/sgi-gru/grutlbpurge.c index bb6b0e64e101..bcfd5425e2e6 100644 --- a/drivers/misc/sgi-gru/grutlbpurge.c +++ b/drivers/misc/sgi-gru/grutlbpurge.c | |||
@@ -242,7 +242,9 @@ static void gru_invalidate_range_end(struct mmu_notifier *mn, | |||
242 | struct gru_mm_struct *gms = container_of(mn, struct gru_mm_struct, | 242 | struct gru_mm_struct *gms = container_of(mn, struct gru_mm_struct, |
243 | ms_notifier); | 243 | ms_notifier); |
244 | 244 | ||
245 | atomic_dec(&gms->ms_range_active); | 245 | /* ..._and_test() provides needed barrier */ |
246 | (void)atomic_dec_and_test(&gms->ms_range_active); | ||
247 | |||
246 | wake_up_all(&gms->ms_wait_queue); | 248 | wake_up_all(&gms->ms_wait_queue); |
247 | gru_dbg(grudev, "gms %p, start 0x%lx, end 0x%lx\n", gms, start, end); | 249 | gru_dbg(grudev, "gms %p, start 0x%lx, end 0x%lx\n", gms, start, end); |
248 | } | 250 | } |