mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-09 05:59:00 +00:00
Merge pull request #3771 from brauner/2021-04-06/fixes
conf: fix setups where /dev is outside of LXC's control
This commit is contained in:
commit
093bfcc83c
@ -3457,12 +3457,6 @@ int lxc_setup(struct lxc_handler *handler)
|
|||||||
return log_error(-1, "Failed to mount \"/dev\"");
|
return log_error(-1, "Failed to mount \"/dev\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
lxc_conf->rootfs.dfd_dev = open_at(lxc_conf->rootfs.dfd_mnt, "dev",
|
|
||||||
PROTECT_OPATH_DIRECTORY,
|
|
||||||
PROTECT_LOOKUP_BENEATH_XDEV, 0);
|
|
||||||
if (lxc_conf->rootfs.dfd_dev < 0 && errno != ENOENT)
|
|
||||||
return log_error_errno(-errno, errno, "Failed to open \"/dev\"");
|
|
||||||
|
|
||||||
/* Do automatic mounts (mainly /proc and /sys), but exclude those that
|
/* Do automatic mounts (mainly /proc and /sys), but exclude those that
|
||||||
* need to wait until other stuff has finished.
|
* need to wait until other stuff has finished.
|
||||||
*/
|
*/
|
||||||
@ -3481,6 +3475,11 @@ int lxc_setup(struct lxc_handler *handler)
|
|||||||
return log_error(-1, "Failed to setup mount entries");
|
return log_error(-1, "Failed to setup mount entries");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lxc_conf->rootfs.dfd_dev = open_at(lxc_conf->rootfs.dfd_mnt, "dev",
|
||||||
|
PROTECT_OPATH_DIRECTORY, PROTECT_LOOKUP_BENEATH_XDEV, 0);
|
||||||
|
if (lxc_conf->rootfs.dfd_dev < 0 && errno != ENOENT)
|
||||||
|
return log_error_errno(-errno, errno, "Failed to open \"/dev\"");
|
||||||
|
|
||||||
if (lxc_conf->is_execute) {
|
if (lxc_conf->is_execute) {
|
||||||
if (execveat_supported()) {
|
if (execveat_supported()) {
|
||||||
int fd;
|
int fd;
|
||||||
|
@ -565,7 +565,7 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
|
|||||||
#define syserror(format, ...) \
|
#define syserror(format, ...) \
|
||||||
({ \
|
({ \
|
||||||
SYSERROR(format, ##__VA_ARGS__); \
|
SYSERROR(format, ##__VA_ARGS__); \
|
||||||
(-errno); \
|
(-labs(errno)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define syserror_set(__ret__, format, ...) \
|
#define syserror_set(__ret__, format, ...) \
|
||||||
@ -586,7 +586,7 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
|
|||||||
#define syswarn(format, ...) \
|
#define syswarn(format, ...) \
|
||||||
({ \
|
({ \
|
||||||
SYSWARN(format, ##__VA_ARGS__); \
|
SYSWARN(format, ##__VA_ARGS__); \
|
||||||
(-errno); \
|
(-labs(errno)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define syswarn_set(__ret__, format, ...) \
|
#define syswarn_set(__ret__, format, ...) \
|
||||||
@ -605,16 +605,16 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
|
|||||||
})
|
})
|
||||||
|
|
||||||
#define sysinfo(format, ...) \
|
#define sysinfo(format, ...) \
|
||||||
({ \
|
({ \
|
||||||
SYSINFO(format, ##__VA_ARGS__); \
|
SYSINFO(format, ##__VA_ARGS__); \
|
||||||
(-errno); \
|
(-labs(errno)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define sysinfo_set(__ret__, format, ...) \
|
#define sysinfo_set(__ret__, format, ...) \
|
||||||
({ \
|
({ \
|
||||||
typeof(__ret__) __internal_ret__ = (__ret__); \
|
typeof(__ret__) __internal_ret__ = (__ret__); \
|
||||||
errno = labs(__ret__); \
|
errno = labs(__ret__); \
|
||||||
SYSINFO(format, ##__VA_ARGS__); \
|
SYSINFO(format, ##__VA_ARGS__); \
|
||||||
__internal_ret__; \
|
__internal_ret__; \
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -628,7 +628,7 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
|
|||||||
#define sysdebug(format, ...) \
|
#define sysdebug(format, ...) \
|
||||||
({ \
|
({ \
|
||||||
SYSDEBUG(format, ##__VA_ARGS__); \
|
SYSDEBUG(format, ##__VA_ARGS__); \
|
||||||
(-errno); \
|
(-labs(errno)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define sysdebug_set(__ret__, format, ...) \
|
#define sysdebug_set(__ret__, format, ...) \
|
||||||
@ -649,7 +649,7 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
|
|||||||
#define systrace(format, ...) \
|
#define systrace(format, ...) \
|
||||||
({ \
|
({ \
|
||||||
SYSTRACE(format, ##__VA_ARGS__); \
|
SYSTRACE(format, ##__VA_ARGS__); \
|
||||||
(-errno); \
|
(-labs(errno)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define systrace_set(__ret__, format, ...) \
|
#define systrace_set(__ret__, format, ...) \
|
||||||
|
Loading…
Reference in New Issue
Block a user