From: Christian Brauner Date: Wed, 23 Mar 2016 15:37:09 +0000 (+0100) Subject: open_without_symlink: Don't SYSERROR on something else than ELOOP X-Git-Tag: lxc-2.0.0.rc14~12^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F911%2Fhead;p=thirdparty%2Flxc.git open_without_symlink: Don't SYSERROR on something else than ELOOP The open_without_symlink routine has been specifically created to prevent mounts with synlinks as source or destination. Keep SYSERROR'ing in that particular scenario, but leave error handling to calling functions for the other ones - e.g. optional bind mount when the source dir doesn't exist throws a nasty error. Signed-off-by: Bogdan Purcareata --- diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 6bee69874..8e7ebbc0d 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -1621,8 +1621,6 @@ static int open_without_symlink(const char *target, const char *prefix_skip) errno = saved_errno; if (errno == ELOOP) SYSERROR("%s in %s was a symbolic link!", nextpath, target); - else - SYSERROR("Error examining %s in %s", nextpath, target); goto out; } } @@ -1667,8 +1665,11 @@ int safe_mount(const char *src, const char *dest, const char *fstype, destfd = open_without_symlink(dest, rootfs); if (destfd < 0) { - if (srcfd != -1) + if (srcfd != -1) { + saved_errno = errno; close(srcfd); + errno = saved_errno; + } return destfd; }