Commit 9c565428 authored by Mikulas Patocka's avatar Mikulas Patocka
Browse files

dm-ebs: fix prefetch-vs-suspend race



There's a possible race condition in dm-ebs - dm bufio prefetch may be in
progress while the device is suspended. Fix this by calling
dm_bufio_client_reset in the postsuspend hook.

Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
parent 2de510fc
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -390,6 +390,12 @@ static int ebs_map(struct dm_target *ti, struct bio *bio)
	return DM_MAPIO_REMAPPED;
}

static void ebs_postsuspend(struct dm_target *ti)
{
	struct ebs_c *ec = ti->private;
	dm_bufio_client_reset(ec->bufio);
}

static void ebs_status(struct dm_target *ti, status_type_t type,
		       unsigned int status_flags, char *result, unsigned int maxlen)
{
@@ -447,6 +453,7 @@ static struct target_type ebs_target = {
	.ctr		 = ebs_ctr,
	.dtr		 = ebs_dtr,
	.map		 = ebs_map,
	.postsuspend	 = ebs_postsuspend,
	.status		 = ebs_status,
	.io_hints	 = ebs_io_hints,
	.prepare_ioctl	 = ebs_prepare_ioctl,