From: Christian Brauner Date: Fri, 5 Feb 2021 16:34:57 +0000 (+0100) Subject: mount_utils: kill mount_at() X-Git-Tag: lxc-5.0.0~298^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca9055b47399a2040a5e1c2a8da591832380b168;p=thirdparty%2Flxc.git mount_utils: kill mount_at() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/mount_utils.c b/src/lxc/mount_utils.c index 590b4bf39..a11526d0e 100644 --- a/src/lxc/mount_utils.c +++ b/src/lxc/mount_utils.c @@ -139,61 +139,6 @@ int mount_filesystem(const char *fs_name, const char *path, unsigned int attr_fl return mount("none", path, fs_name, old_flags, NULL); } -int mount_at(int dfd, - const char *src_under_dfd, - const char *dst_under_dfd, - __u64 o_flags, - __u64 resolve_flags, - const char *fstype, - unsigned int mnt_flags, - const void *data) -{ - __do_close int source_fd = -EBADF, target_fd = -EBADF; - struct lxc_open_how how = { - .flags = o_flags, - .resolve = resolve_flags, - }; - int ret; - char src_buf[LXC_PROC_PID_FD_LEN], dst_buf[LXC_PROC_PID_FD_LEN]; - - if (dfd < 0) - return ret_errno(EINVAL); - - if (!is_empty_string(src_buf) && *src_buf == '/') - return log_error_errno(-EINVAL, EINVAL, "Absolute path specified"); - - if (!is_empty_string(src_under_dfd)) { - source_fd = openat2(dfd, src_under_dfd, &how, sizeof(how)); - if (source_fd < 0) - return -errno; - - ret = snprintf(src_buf, sizeof(src_buf), "/proc/self/fd/%d", source_fd); - if (ret < 0 || ret >= sizeof(src_buf)) - return -EIO; - } - - if (!is_empty_string(dst_under_dfd)) { - target_fd = openat2(dfd, dst_under_dfd, &how, sizeof(how)); - if (target_fd < 0) - return log_error_errno(-errno, errno, "Failed to open %d(%s)", dfd, dst_under_dfd); - - TRACE("Mounting %d(%s) through /proc/self/fd/%d", target_fd, dst_under_dfd, target_fd); - ret = snprintf(dst_buf, sizeof(dst_buf), "/proc/self/fd/%d", target_fd); - } else { - TRACE("Mounting %d through /proc/self/fd/%d", dfd, dfd); - ret = snprintf(dst_buf, sizeof(dst_buf), "/proc/self/fd/%d", dfd); - } - if (ret < 0 || ret >= sizeof(dst_buf)) - return -EIO; - - if (!is_empty_string(src_buf)) - ret = mount(src_buf, dst_buf, fstype, mnt_flags, data); - else - ret = mount(NULL, dst_buf, fstype, mnt_flags, data); - - return ret; -} - static int __fs_prepare(const char *fs_name, int fd_from) { __do_close int fd_fs = -EBADF; diff --git a/src/lxc/mount_utils.h b/src/lxc/mount_utils.h index efb9915c6..8f57802f5 100644 --- a/src/lxc/mount_utils.h +++ b/src/lxc/mount_utils.h @@ -152,11 +152,6 @@ __hidden extern int mnt_attributes_old(unsigned int new_flags, unsigned int *old __hidden extern int mount_filesystem(const char *fs_name, const char *path, unsigned int attr_flags); -__hidden extern int mount_at(int dfd, const char *src_under_dfd, - const char *dst_under_dfd, __u64 o_flags, - __u64 resolve_flags, const char *fstype, - unsigned int mnt_flags, const void *data); - __hidden extern int mount_from_at(int dfd_from, const char *path_from, __u64 o_flags_from, __u64 resolve_flags_from, int dfd_to, const char *path_to,