diff options
-rw-r--r-- | WHATS_NEW | 1 | ||||
-rw-r--r-- | lib/cache/lvmcache.c | 8 | ||||
-rw-r--r-- | lib/commands/toolcontext.c | 5 | ||||
-rw-r--r-- | lib/metadata/metadata.c | 4 |
4 files changed, 10 insertions, 8 deletions
@@ -1,5 +1,6 @@ Version 2.02.89 - ================================== + Add check for access through NULL pointer when refresh_filter() fails. Use pthread condition for SINGLENODE lock implementation. Improve backtrace reporting for some dev_manager_ functions. Change message severity to log_warn when symlink creation fails. diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c index 6fdd976a..c02ec7b9 100644 --- a/lib/cache/lvmcache.c +++ b/lib/cache/lvmcache.c @@ -597,12 +597,10 @@ int lvmcache_label_scan(struct cmd_context *cmd, int full_scan) goto out; } - if (full_scan == 2 && !cmd->filter->use_count && !refresh_filters(cmd)) { - log_error("refresh filters failed"); - goto out; - } + if (full_scan == 2 && (cmd->filter && !cmd->filter->use_count) && !refresh_filters(cmd)) + goto_out; - if (!(iter = dev_iter_create(cmd->filter, (full_scan == 2) ? 1 : 0))) { + if (!cmd->filter || !(iter = dev_iter_create(cmd->filter, (full_scan == 2) ? 1 : 0))) { log_error("dev_iter creation failed"); goto out; } diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c index 6c554b20..db5ef030 100644 --- a/lib/commands/toolcontext.c +++ b/lib/commands/toolcontext.c @@ -786,7 +786,7 @@ static int _init_filters(struct cmd_context *cmd, unsigned load_persistent_cache cmd->dump_filter = 0; if (!(f3 = _init_filter_components(cmd))) - return 0; + return_0; init_ignore_suspended_devices(find_config_tree_int(cmd, "devices/ignore_suspended_devices", DEFAULT_IGNORE_SUSPENDED_DEVICES)); @@ -1402,7 +1402,8 @@ int refresh_filters(struct cmd_context *cmd) cmd->filter = NULL; } - r = _init_filters(cmd, 0); + if (!(r = _init_filters(cmd, 0))) + stack; /* * During repair code must not reset suspended flag. diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index e9894c5b..2d53d572 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -1373,7 +1373,9 @@ static int pvcreate_check(struct cmd_context *cmd, const char *name, /* Is there an md superblock here? */ /* FIXME: still possible issues here - rescan cache? */ if (!dev && md_filtering()) { - refresh_filters(cmd); + if (!refresh_filters(cmd)) + goto_bad; + init_md_filtering(0); dev = dev_cache_get(name, cmd->filter); init_md_filtering(1); |