Make log->disk_header 1 sector in size rather than the actual size of the struct, since we can't read less than a sector. --- diff/drivers/md/dm-log.c 2004-01-07 14:40:45.000000000 +0000 +++ source/drivers/md/dm-log.c 2004-01-14 14:42:18.000000000 +0000 @@ -389,7 +389,12 @@ lc->header_location.bdev = lc->log_dev->bdev; lc->header_location.sector = 0; lc->header_location.count = 1; - lc->disk_header = vmalloc(sizeof(struct log_header)); + + /* + * We can't read less than this amount, even though we'll + * not be using most of this space. + */ + lc->disk_header = vmalloc(1 << SECTOR_SHIFT); if (!lc->disk_header) goto bad;