From: Zdenek Kabelac Date: Tue, 28 Feb 2012 11:12:58 +0000 (+0000) Subject: Test dm_hash_insert() failures mem failures X-Git-Tag: v2_02_96~271 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=0650d875e8df26dcaab88d200b97b50b8e21f236;p=lvm2.git Test dm_hash_insert() failures mem failures --- diff --git a/WHATS_NEW b/WHATS_NEW index 315853da9..a3f888548 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.94 - ==================================== + Test dm_hash_insert() failures in filter-persistent.c and fid_add_mda(). Ensure clvmd message is always \0 terminated after read. Better detection of missing dmeventd fifo connection (2.02.93). Add some close() and dev_close() error path backtraces. diff --git a/lib/filters/filter-persistent.c b/lib/filters/filter-persistent.c index c7f484737..370580485 100644 --- a/lib/filters/filter-persistent.c +++ b/lib/filters/filter-persistent.c @@ -292,7 +292,10 @@ static int _lookup_p(struct dev_filter *f, struct device *dev) if (MAJOR(dev->dev) == dm_major()) { if (!l) dm_list_iterate_items(sl, &dev->aliases) - dm_hash_insert(pf->devices, sl->str, PF_GOOD_DEVICE); + if (!dm_hash_insert(pf->devices, sl->str, PF_GOOD_DEVICE)) { + log_error("Failed to hash device to filter."); + return 0; + } if (!device_is_usable(dev)) { log_debug("%s: Skipping unusable device", dev_name(dev)); return 0; @@ -305,7 +308,10 @@ static int _lookup_p(struct dev_filter *f, struct device *dev) l = pf->real->passes_filter(pf->real, dev) ? PF_GOOD_DEVICE : PF_BAD_DEVICE; dm_list_iterate_items(sl, &dev->aliases) - dm_hash_insert(pf->devices, sl->str, l); + if (!dm_hash_insert(pf->devices, sl->str, l)) { + log_error("Failed to hash alias to filter."); + return 0; + } } return (l == PF_BAD_DEVICE) ? 0 : 1; diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index a34f2e86e..c4a428397 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -4283,8 +4283,11 @@ int fid_add_mda(struct format_instance *fid, struct metadata_area *mda, full_key, sizeof(full_key))) return_0; - dm_hash_insert(fid->metadata_areas_index, - full_key, mda); + if (!dm_hash_insert(fid->metadata_areas_index, + full_key, mda)) { + log_error("Failed to hash mda."); + return 0; + } return 1; }