Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c6fff44 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Alasdair G Kergon
Browse files

dm snapshot: lock snapshot while supplying status



This patch locks the snapshot when returning status.  It fixes a race
when it could return an invalid number of free chunks if someone
was simultaneously modifying it.

Cc: stable@kernel.org
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 0e8c4e4e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1152,6 +1152,8 @@ static int snapshot_status(struct dm_target *ti, status_type_t type,
	unsigned sz = 0;
	struct dm_snapshot *snap = ti->private;

	down_write(&snap->lock);

	switch (type) {
	case STATUSTYPE_INFO:
		if (!snap->valid)
@@ -1183,6 +1185,8 @@ static int snapshot_status(struct dm_target *ti, status_type_t type,
		break;
	}

	up_write(&snap->lock);

	return 0;
}