[lvm-devel] master - libdm: cache target arg validation
Zdenek Kabelac
zkabelac at fedoraproject.org
Wed Aug 12 12:41:12 UTC 2015
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=08f047eb51375f6b96b0612e766cc9e0edae6ca0
Commit: 08f047eb51375f6b96b0612e766cc9e0edae6ca0
Parent: 9edd2258ffc7ae7593a6e193760861090d0fb273
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Tue Aug 11 13:31:26 2015 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Wed Aug 12 14:33:15 2015 +0200
libdm: cache target arg validation
Add some arg validation for dm_tree_node_add_cache_target().
---
WHATS_NEW_DM | 1 +
libdm/libdm-deptree.c | 26 ++++++++++++++++++++++++++
2 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index e857241..a72d3e0 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.105 -
===================================
+ Add more arg validation for dm_tree_node_add_cache_target().
Version 1.02.104 - 10th August 2015
===================================
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index 36befff..bbbd2d8 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -3358,6 +3358,32 @@ int dm_tree_node_add_cache_target(struct dm_tree_node *node,
struct dm_config_node *cn;
struct load_segment *seg;
+ switch (feature_flags &
+ (DM_CACHE_FEATURE_PASSTHROUGH |
+ DM_CACHE_FEATURE_WRITETHROUGH |
+ DM_CACHE_FEATURE_WRITEBACK)) {
+ case DM_CACHE_FEATURE_PASSTHROUGH:
+ case DM_CACHE_FEATURE_WRITETHROUGH:
+ case DM_CACHE_FEATURE_WRITEBACK:
+ break;
+ default:
+ log_error("Invalid cache's feature flag " FMTu64 ".",
+ feature_flags);
+ return 0;
+ }
+
+ if (data_block_size < DM_CACHE_MIN_DATA_BLOCK_SIZE) {
+ log_error("Data block size %u is lower then %u sectors.",
+ data_block_size, DM_CACHE_MIN_DATA_BLOCK_SIZE);
+ return 0;
+ }
+
+ if (data_block_size > DM_CACHE_MAX_DATA_BLOCK_SIZE) {
+ log_error("Data block size %u is higher then %u sectors.",
+ data_block_size, DM_CACHE_MAX_DATA_BLOCK_SIZE);
+ return 0;
+ }
+
if (!(seg = _add_segment(node, SEG_CACHE, size)))
return_0;
More information about the lvm-devel
mailing list