Prepare lookup function for more files to look after
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 7466805..4a4dc56 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -153,6 +153,14 @@
 	return mod;
 }
 
+#define CHECK_ERR_AND_FINISH(_err, _label_err, _list, label_finish)	\
+	do {								\
+		if ((_err) < 0)						\
+			goto _label_err;				\
+		if (*(_list) != NULL)					\
+			goto finish;					\
+	} while (0)
+
 KMOD_EXPORT int kmod_module_new_from_lookup(struct kmod_ctx *ctx,
 						const char *alias,
 						struct kmod_list **list)
@@ -169,15 +177,20 @@
 		return -ENOSYS;
 	}
 
+	/* Aliases from config file override all the others */
 	err = kmod_lookup_alias_from_config(ctx, alias, list);
+	CHECK_ERR_AND_FINISH(err, fail, list, finish);
 
-	if (err < 0) {
-		kmod_module_unref_list(*list);
-		*list = NULL;
-	}
+
+finish:
 
 	return err;
+fail:
+	kmod_module_unref_list(*list);
+	*list = NULL;
 }
+#undef CHECK_ERR_AND_FINISH
+
 
 KMOD_EXPORT int kmod_module_unref_list(struct kmod_list *list)
 {