summaryrefslogtreecommitdiffstats
path: root/sys/geom/eli/g_eli.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/geom/eli/g_eli.c')
-rw-r--r--sys/geom/eli/g_eli.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c
index 23fd7ba..6eea018 100644
--- a/sys/geom/eli/g_eli.c
+++ b/sys/geom/eli/g_eli.c
@@ -633,7 +633,10 @@ g_eli_read_metadata(struct g_class *mp, struct g_provider *pp,
g_topology_lock();
if (buf == NULL)
goto end;
- eli_metadata_decode(buf, md);
+ error = eli_metadata_decode(buf, md);
+ if (error != 0)
+ goto end;
+ /* Metadata was read and decoded successfully. */
end:
if (buf != NULL)
g_free(buf);
@@ -998,6 +1001,13 @@ g_eli_keyfiles_load(struct hmac_ctx *ctx, const char *provider)
for (i = 0; ; i++) {
snprintf(name, sizeof(name), "%s:geli_keyfile%d", provider, i);
keyfile = preload_search_by_type(name);
+ if (keyfile == NULL && i == 0) {
+ /*
+ * If there is only one keyfile, allow simpler name.
+ */
+ snprintf(name, sizeof(name), "%s:geli_keyfile", provider);
+ keyfile = preload_search_by_type(name);
+ }
if (keyfile == NULL)
return (i); /* Return number of loaded keyfiles. */
data = preload_fetch_addr(keyfile);
OpenPOWER on IntegriCloud