dm log: ensure log bitmap fits on log device
[deliverable/linux.git] / drivers / md / dm-log.c
index 40ed70df6736754dc378df65ab3c6035c2246f72..737961f275c196f9b6aa41957dd08c72457c597b 100644 (file)
@@ -457,6 +457,14 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
                 */
                buf_size = dm_round_up((LOG_OFFSET << SECTOR_SHIFT) +
                                       bitset_size, ti->limits.hardsect_size);
+
+               if (buf_size > dev->bdev->bd_inode->i_size) {
+                       DMWARN("log device %s too small: need %llu bytes",
+                               dev->name, (unsigned long long)buf_size);
+                       kfree(lc);
+                       return -EINVAL;
+               }
+
                lc->header_location.count = buf_size >> SECTOR_SHIFT;
 
                lc->io_req.mem.type = DM_IO_VMA;
This page took 0.026694 seconds and 5 git commands to generate.