From: Lennart Poettering Date: Wed, 4 Apr 2018 09:03:21 +0000 (+0200) Subject: namespace: split out calls to normalize mount entry list into new function X-Git-Tag: v239~391^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f8b64b5723528f68a01a3682c74033901917275e;p=thirdparty%2Fsystemd.git namespace: split out calls to normalize mount entry list into new function --- diff --git a/src/core/namespace.c b/src/core/namespace.c index 0cce2b45845..ec6b0a5ae74 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -1066,6 +1066,18 @@ static unsigned namespace_calculate_mounts( (namespace_info_mount_apivfs(root_directory, ns_info) ? ELEMENTSOF(apivfs_table) : 0); } +static void normalize_mounts(const char *root_directory, MountEntry *mounts, unsigned *n_mounts) { + assert(n_mounts); + assert(mounts || *n_mounts == 0); + + qsort_safe(mounts, *n_mounts, sizeof(MountEntry), mount_path_compare); + + drop_duplicates(mounts, n_mounts); + drop_outside_root(root_directory, mounts, n_mounts); + drop_inaccessible(mounts, n_mounts); + drop_nop(mounts, n_mounts); +} + int setup_namespace( const char* root_directory, const char* root_image, @@ -1250,12 +1262,7 @@ int setup_namespace( if (r < 0) goto finish; - qsort(mounts, n_mounts, sizeof(MountEntry), mount_path_compare); - - drop_duplicates(mounts, &n_mounts); - drop_outside_root(root, mounts, &n_mounts); - drop_inaccessible(mounts, &n_mounts); - drop_nop(mounts, &n_mounts); + normalize_mounts(root_directory, mounts, &n_mounts); } if (unshare(CLONE_NEWNS) < 0) {