int lxc_abstract_unix_open(const char *path, int type, int flags)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
ssize_t len;
struct sockaddr_un addr;
int lxc_abstract_unix_connect(const char *path)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
ssize_t len;
struct sockaddr_un addr;
int lxc_unix_connect_type(struct sockaddr_un *addr, int type)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
ssize_t len;
*/
static int in_same_namespace(pid_t pid1, pid_t pid2, const char *ns)
{
- __do_close_prot_errno int ns_fd1 = -1, ns_fd2 = -1;
+ __do_close int ns_fd1 = -1, ns_fd2 = -1;
int ret = -1;
struct stat ns_st1, ns_st2;
const char *cgroup_leaf)
{
__do_free char *parent_cgroup = NULL, *child_cgroup = NULL, *dup = NULL;
- __do_close_prot_errno int cgroup_fd = -EBADF;
+ __do_close int cgroup_fd = -EBADF;
int fret = -1;
int ret;
char v;
__do_free char *full_path = NULL;
if (payload) {
- __lxc_unused __do_close_prot_errno int fd = move_fd(h->cgfd_con);
+ __lxc_unused __do_close int fd = move_fd(h->cgfd_con);
full_path = move_ptr(h->container_full_path);
} else {
- __lxc_unused __do_close_prot_errno int fd = move_fd(h->cgfd_mon);
+ __lxc_unused __do_close int fd = move_fd(h->cgfd_mon);
full_path = move_ptr(h->monitor_full_path);
}
static int freezer_cgroup_events_cb(int fd, uint32_t events, void *cbdata,
struct lxc_epoll_descr *descr)
{
- __do_close_prot_errno int duped_fd = -EBADF;
+ __do_close int duped_fd = -EBADF;
__do_free char *line = NULL;
__do_fclose FILE *f = NULL;
int state = PTR_TO_INT(cbdata);
static int cg_unified_freeze(struct cgroup_ops *ops, int timeout)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
__do_lxc_mainloop_close struct lxc_epoll_descr *descr_ptr = NULL;
int ret;
struct lxc_epoll_descr descr;
static int cg_unified_unfreeze(struct cgroup_ops *ops, int timeout)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
__do_lxc_mainloop_close struct lxc_epoll_descr *descr_ptr = NULL;
int ret;
struct lxc_epoll_descr descr;
int cgroup_attach(const char *name, const char *lxcpath, int64_t pid)
{
- __do_close_prot_errno int unified_fd = -EBADF;
+ __do_close int unified_fd = -EBADF;
unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath);
if (unified_fd < 0)
const char *lxcpath, pid_t pid,
const char *controller)
{
- __do_close_prot_errno int unified_fd = -EBADF;
+ __do_close int unified_fd = -EBADF;
int ret;
ret = cgroup_attach(name, lxcpath, pid);
const char *path, uint32_t flags)
{
__do_free char *copy = NULL;
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
union bpf_attr attr;
int ret;
int bpf_program_cgroup_detach(struct bpf_program *prog)
{
int ret;
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
if (!prog)
return 0;
static int open_and_lock(const char *path)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
struct flock lk;
*/
static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
{
- __do_close_prot_errno int fd_rsp = -EBADF;
+ __do_close int fd_rsp = -EBADF;
int ret;
struct lxc_cmd_rsp *rsp = &cmd->rsp;
static int lxc_cmd_send(const char *name, struct lxc_cmd_rr *cmd,
const char *lxcpath, const char *hashed_sock_name)
{
- __do_close_prot_errno int client_fd = -EBADF;
+ __do_close int client_fd = -EBADF;
ssize_t ret = -1;
client_fd = lxc_cmd_connect(name, lxcpath, hashed_sock_name, "command");
static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
const char *lxcpath, const char *hashed_sock_name)
{
- __do_close_prot_errno int client_fd = -EBADF;
+ __do_close int client_fd = -EBADF;
int ret = -1;
bool stay_connected = false;
lxc_state_t states[MAX_STATE],
int *state_client_fd)
{
- __do_close_prot_errno int clientfd = -EBADF;
+ __do_close int clientfd = -EBADF;
int state, stopped;
ssize_t ret;
struct lxc_cmd_rr cmd = {
#ifdef HAVE_SECCOMP_NOTIFY
int ret;
- __do_close_prot_errno int recv_fd = -EBADF;
+ __do_close int recv_fd = -EBADF;
ret = lxc_abstract_unix_recv_fds(fd, &recv_fd, 1, NULL, 0);
if (ret <= 0) {
static int lxc_cmd_accept(int fd, uint32_t events, void *data,
struct lxc_epoll_descr *descr)
{
- __do_close_prot_errno int connection = -EBADF;
+ __do_close int connection = -EBADF;
int opt = 1, ret = -1;
connection = accept(fd, NULL, 0);
int lxc_cmd_init(const char *name, const char *lxcpath, const char *suffix)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
char path[LXC_AUDS_ADDR_LEN] = {0};
int lxc_cmd_sock_get_state(const char *name, const char *lxcpath,
lxc_state_t states[MAX_STATE], int timeout)
{
- __do_close_prot_errno int state_client_fd = -EBADF;
+ __do_close int state_client_fd = -EBADF;
int ret;
ret = lxc_cmd_add_state_client(name, lxcpath, states, &state_client_fd);
*/
static int lxc_pivot_root(const char *rootfs)
{
- __do_close_prot_errno int oldroot = -EBADF, newroot = -EBADF;
+ __do_close int oldroot = -EBADF, newroot = -EBADF;
int ret;
oldroot = open("/", O_DIRECTORY | O_RDONLY | O_CLOEXEC);
FILE *make_anonymous_mount_file(struct lxc_list *mount,
bool include_nesting_helpers)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
FILE *f;
int ret;
char *mount_entry;
int write_id_mapping(enum idtype idtype, pid_t pid, const char *buf,
size_t buf_size)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
char path[PATH_MAX];
if (geteuid() != 0 && idtype == ID_TYPE_GID) {
- __do_close_prot_errno int setgroups_fd = -EBADF;
+ __do_close int setgroups_fd = -EBADF;
ret = snprintf(path, PATH_MAX, "/proc/%d/setgroups", pid);
if (ret < 0 || ret >= PATH_MAX)
{
__do_free char *line = NULL;
__do_fclose FILE *f = NULL;
- __do_close_prot_errno int memfd = -EBADF, mntinfo_fd = -EBADF;
+ __do_close int memfd = -EBADF, mntinfo_fd = -EBADF;
int ret;
ssize_t copied;
size_t len = 0;
int lxc_readat(int dirfd, const char *filename, void *buf, size_t count)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
ssize_t ret;
fd = openat(dirfd, filename, O_RDONLY | O_CLOEXEC);
int lxc_writeat(int dirfd, const char *filename, const void *buf, size_t count)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
ssize_t ret;
fd = openat(dirfd, filename,
int lxc_write_openat(const char *dir, const char *filename, const void *buf,
size_t count)
{
- __do_close_prot_errno int dirfd = -EBADF;
+ __do_close int dirfd = -EBADF;
dirfd = open(dir, O_DIRECTORY | O_RDONLY | O_CLOEXEC | O_NOCTTY | O_NOFOLLOW);
if (dirfd < 0)
int lxc_write_to_file(const char *filename, const void *buf, size_t count,
bool add_newline, mode_t mode)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
ssize_t ret;
fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT | O_CLOEXEC, mode);
int lxc_read_from_file(const char *filename, void *buf, size_t count)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
ssize_t ret;
fd = open(filename, O_RDONLY | O_CLOEXEC);
ssize_t lxc_read_file_expect(const char *path, void *buf, size_t count,
const void *expected_buf)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
fd = open(path, O_RDONLY | O_CLOEXEC);
if (fd < 0)
int lxc_make_tmpfile(char *template, bool rm)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
mode_t msk;
FILE *fopen_cloexec(const char *path, const char *mode)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int open_mode = 0, step = 0;
FILE *f;
char *file_to_buf(const char *path, size_t *length)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
if (!length)
return NULL;
#else
- __do_close_prot_errno int dupfd = -EBADF;
+ __do_close int dupfd = -EBADF;
dupfd = dup(fd);
if (dupfd < 0)
static int ongoing_create(struct lxc_container *c)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
__do_free char *path = NULL;
struct flock lk = {0};
int ret;
static bool do_lxcapi_reboot(struct lxc_container *c)
{
- __do_close_prot_errno int pidfd = -EBADF;
+ __do_close int pidfd = -EBADF;
pid_t pid = -1;
int ret;
int rebootsignal = SIGINT;
static bool do_lxcapi_reboot2(struct lxc_container *c, int timeout)
{
- __do_close_prot_errno int pidfd = -EBADF, state_client_fd = -EBADF;
+ __do_close int pidfd = -EBADF, state_client_fd = -EBADF;
int rebootsignal = SIGINT;
pid_t pid = -1;
lxc_state_t states[MAX_STATE] = {0};
static bool do_lxcapi_shutdown(struct lxc_container *c, int timeout)
{
- __do_close_prot_errno int pidfd = -EBADF, state_client_fd = -EBADF;
+ __do_close int pidfd = -EBADF, state_client_fd = -EBADF;
int haltsignal = SIGPWR;
pid_t pid = -1;
lxc_state_t states[MAX_STATE] = {0};
{
close_prot_errno_disarm(*fd);
}
-#define __do_close_prot_errno call_cleaner(close_prot_errno_disarm)
+#define __do_close call_cleaner(close_prot_errno_disarm)
define_cleanup_function(FILE *, fclose);
#define __do_fclose call_cleaner(fclose)
static int is_memfd(void)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int seals;
fd = open("/proc/self/exe", O_RDONLY | O_CLOEXEC);
static void lxc_rexec_as_memfd(char **argv, char **envp, const char *memfd_name)
{
- __do_close_prot_errno int execfd = -EBADF, fd = -EBADF, memfd = -EBADF,
+ __do_close int execfd = -EBADF, fd = -EBADF, memfd = -EBADF,
tmpfd = -EBADF;
int ret;
ssize_t bytes_sent = 0;
#if HAVE_DECL_SECCOMP_NOTIFY_FD
static int seccomp_notify_reconnect(struct lxc_handler *handler)
{
- __do_close_prot_errno int notify_fd = -EBADF;
+ __do_close int notify_fd = -EBADF;
close_prot_errno_disarm(handler->conf->seccomp.notifier.proxy_fd);
{
#if HAVE_DECL_SECCOMP_NOTIFY_FD
- __do_close_prot_errno int fd_pid = -EBADF;
- __do_close_prot_errno int fd_mem = -EBADF;
+ __do_close int fd_pid = -EBADF;
+ __do_close int fd_mem = -EBADF;
int ret;
ssize_t bytes;
int send_fd_list[2];
#if HAVE_DECL_SECCOMP_NOTIFY_FD
if (seccomp->notifier.wants_supervision &&
seccomp->notifier.proxy_addr.sun_path[1] != '\0') {
- __do_close_prot_errno int notify_fd = -EBADF;
+ __do_close int notify_fd = -EBADF;
int ret;
notify_fd = lxc_unix_connect_type(&seccomp->notifier.proxy_addr,
int lxc_init(const char *name, struct lxc_handler *handler)
{
- __do_close_prot_errno int status_fd = -EBADF;
+ __do_close int status_fd = -EBADF;
int ret;
const char *loglevel;
struct lxc_conf *conf = handler->conf;
static int do_start(void *data)
{
struct lxc_handler *handler = data;
- __lxc_unused __do_close_prot_errno int data_sock0 = handler->data_sock[0],
+ __lxc_unused __do_close int data_sock0 = handler->data_sock[0],
data_sock1 = handler->data_sock[1];
- __do_close_prot_errno int status_fd = -EBADF;
+ __do_close int status_fd = -EBADF;
int ret;
uid_t new_uid;
gid_t new_gid;
*/
static int lxc_spawn(struct lxc_handler *handler)
{
- __do_close_prot_errno int data_sock0 = -EBADF, data_sock1 = -EBADF;
+ __do_close int data_sock0 = -EBADF, data_sock1 = -EBADF;
int i, ret;
char pidstr[20];
bool wants_to_map_ids;
struct lxc_terminal_state *lxc_terminal_signal_init(int srcfd, int dstfd)
{
- __do_close_prot_errno int signal_fd = -EBADF;
+ __do_close int signal_fd = -EBADF;
__do_free struct lxc_terminal_state *ts = NULL;
int ret;
sigset_t mask;
bool switch_to_ns(pid_t pid, const char *ns)
{
- __do_close_prot_errno int fd = -EBADF;
+ __do_close int fd = -EBADF;
int ret;
char nspath[STRLITERALLEN("/proc//ns/")
+ INTTYPE_TO_STRLEN(pid_t)
static int process_dead(/* takes */ int status_fd)
{
- __do_close_prot_errno int dupfd = -EBADF;
+ __do_close int dupfd = -EBADF;
__do_free char *line = NULL;
__do_fclose FILE *f = NULL;
int ret = 0;
static int get_random_bytes(void *p, size_t n)
{
- __do_close_prot_errno int fd = -1;
+ __do_close int fd = -1;
ssize_t bytes = 0;
fd = open("/dev/urandom", O_RDONLY | O_CLOEXEC | O_NOCTTY);