diff --git a/drivers/md/dm-ps-historical-service-time.c b/drivers/md/dm-ps-historical-service-time.c index e0103eefe28f..3ad40505ff46 100644 --- a/drivers/md/dm-ps-historical-service-time.c +++ b/drivers/md/dm-ps-historical-service-time.c @@ -202,6 +202,7 @@ static int hst_status(struct path_selector *ps, struct dm_path *path, { unsigned int sz = 0; struct path_info *pi; + unsigned long flags; if (!path) { struct selector *s = ps->context; @@ -212,8 +213,10 @@ static int hst_status(struct path_selector *ps, struct dm_path *path, switch (type) { case STATUSTYPE_INFO: + spin_lock_irqsave(&pi->lock, flags); DMEMIT("%llu %llu %llu ", pi->historical_service_time, pi->outstanding, pi->stale_after); + spin_unlock_irqrestore(&pi->lock, flags); break; case STATUSTYPE_TABLE: DMEMIT("%u ", pi->repeat_count);