[dm-devel] [PATCH] dm integrity: Reject mappings too large for device

Ondrej Mosnacek omosnacek at gmail.com
Mon Jun 5 15:52:39 UTC 2017


Before this patch, dm-integrity would successfully create mappings with
the number of sectors greater than the provided data sector count.
Attempts to read sectors of this mapping that were beyond the provided
data sector count would then yield run-time messages of the form
"device-mapper: integrity: Too big sector number: ...".

This patch fixes this by emitting an error when the requested mapping
size is bigger than the provided data sector count.

Cc: Mikulas Patocka <mpatocka at redhat.com>
Cc: Milan Broz <gmazyland at gmail.com>
Signed-off-by: Ondrej Mosnacek <omosnacek at gmail.com>
---
 drivers/md/dm-integrity.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index 7910bfe50da4..4ab10cf718c9 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -3040,6 +3040,11 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
 		ti->error = "The device is too small";
 		goto bad;
 	}
+	if (ti->len > ic->provided_data_sectors) {
+		r = -EINVAL;
+		ti->error = "Not enough provided sectors for requested mapping size";
+		goto bad;
+	}
 
 	if (!buffer_sectors)
 		buffer_sectors = 1;
-- 
2.11.0




More information about the dm-devel mailing list