mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-08-02 14:52:19 +00:00
pb: Rewrite object writing to use pb-descs
The pb_write thing is no longer a macros. Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
9e84bd1083
commit
2398c55e41
21 changed files with 54 additions and 55 deletions
16
cr-dump.c
16
cr-dump.c
|
|
@ -158,7 +158,7 @@ int do_dump_gen_file(struct fd_parms *p, int lfd,
|
|||
pr_info("fdinfo: type: 0x%2x flags: 0x%4x pos: 0x%8lx fd: %d\n",
|
||||
ops->type, p->flags, p->pos, p->fd);
|
||||
|
||||
return pb_write(fdset_fd(cr_fdset, CR_FD_FDINFO), &e, fdinfo_entry);
|
||||
return pb_write_one(fdset_fd(cr_fdset, CR_FD_FDINFO), &e, PB_FDINFO);
|
||||
}
|
||||
|
||||
static int dump_task_exe_link(pid_t pid, MmEntry *mm)
|
||||
|
|
@ -393,7 +393,7 @@ static int dump_task_fs(pid_t pid, struct cr_fdset *fdset)
|
|||
pr_info("Dumping task cwd id %#x root id %#x\n",
|
||||
fe.cwd_id, fe.root_id);
|
||||
|
||||
return pb_write(fdset_fd(fdset, CR_FD_FS), &fe, fs_entry);
|
||||
return pb_write_one(fdset_fd(fdset, CR_FD_FS), &fe, PB_FS);
|
||||
}
|
||||
|
||||
static int dump_filemap(pid_t pid, VmaEntry *vma, int file_fd,
|
||||
|
|
@ -444,7 +444,7 @@ static int dump_task_mappings(pid_t pid, const struct list_head *vma_area_list,
|
|||
ret = 0;
|
||||
|
||||
if (!ret)
|
||||
ret = pb_write(fd, vma, vma_entry);
|
||||
ret = pb_write_one(fd, vma, PB_VMAS);
|
||||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
|
@ -492,7 +492,7 @@ static int dump_task_creds(pid_t pid, const struct parasite_dump_misc *misc,
|
|||
|
||||
ce.secbits = misc->secbits;
|
||||
|
||||
return pb_write(fdset_fd(fds, CR_FD_CREDS), &ce, creds_entry);
|
||||
return pb_write_one(fdset_fd(fds, CR_FD_CREDS), &ce, PB_CREDS);
|
||||
}
|
||||
|
||||
#define assign_reg(dst, src, e) dst->e = (__typeof__(dst->e))src.e
|
||||
|
|
@ -559,7 +559,7 @@ static int dump_task_mm(pid_t pid, const struct proc_pid_stat *stat,
|
|||
if (dump_task_exe_link(pid, &mme))
|
||||
goto out;
|
||||
|
||||
ret = pb_write(fdset_fd(fdset, CR_FD_MM), &mme, mm_entry);
|
||||
ret = pb_write_one(fdset_fd(fdset, CR_FD_MM), &mme, PB_MM);
|
||||
xfree(mme.mm_saved_auxv);
|
||||
out:
|
||||
return ret;
|
||||
|
|
@ -859,7 +859,7 @@ static int dump_task_core_all(pid_t pid, const struct proc_pid_stat *stat,
|
|||
core->tc->task_state = TASK_ALIVE;
|
||||
core->tc->exit_code = 0;
|
||||
|
||||
ret = pb_write(fd_core, core, core_entry);
|
||||
ret = pb_write_one(fd_core, core, PB_CORE);
|
||||
if (ret < 0) {
|
||||
pr_info("ERROR\n");
|
||||
goto err_free;
|
||||
|
|
@ -1248,7 +1248,7 @@ static int dump_task_thread(struct parasite_ctl *parasite_ctl, struct pid *tid)
|
|||
if (fd_core < 0)
|
||||
goto err_free;
|
||||
|
||||
ret = pb_write(fd_core, core, core_entry);
|
||||
ret = pb_write_one(fd_core, core, PB_CORE);
|
||||
|
||||
close(fd_core);
|
||||
err_free:
|
||||
|
|
@ -1275,7 +1275,7 @@ static int dump_one_zombie(const struct pstree_item *item,
|
|||
if (fd_core < 0)
|
||||
goto err_free;
|
||||
|
||||
ret = pb_write(fd_core, core, core_entry);
|
||||
ret = pb_write_one(fd_core, core, PB_CORE);
|
||||
close(fd_core);
|
||||
err_free:
|
||||
core_entry_free(core);
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@ static int dump_eventfd_entry(union fdinfo_entries *e, void *arg)
|
|||
e->efd.fown = (FownEntry *)&da->p->fown;
|
||||
|
||||
pr_info_eventfd("Dumping ", &e->efd);
|
||||
return pb_write(fdset_fd(glob_fdset, CR_FD_EVENTFD),
|
||||
&e->efd, eventfd_file_entry);
|
||||
return pb_write_one(fdset_fd(glob_fdset, CR_FD_EVENTFD),
|
||||
&e->efd, PB_EVENTFD);
|
||||
}
|
||||
|
||||
static int dump_one_eventfd(int lfd, u32 id, const struct fd_parms *p)
|
||||
|
|
|
|||
|
|
@ -69,8 +69,8 @@ static int dump_eventpoll_entry(union fdinfo_entries *e, void *arg)
|
|||
|
||||
efd->id = *(u32 *)arg;
|
||||
pr_info_eventpoll_tfd("Dumping: ", efd);
|
||||
return pb_write(fdset_fd(glob_fdset, CR_FD_EVENTPOLL_TFD),
|
||||
efd, eventpoll_tfd_entry);
|
||||
return pb_write_one(fdset_fd(glob_fdset, CR_FD_EVENTPOLL_TFD),
|
||||
efd, PB_EVENTPOLL_TFD);
|
||||
}
|
||||
|
||||
static int dump_one_eventpoll(int lfd, u32 id, const struct fd_parms *p)
|
||||
|
|
@ -82,8 +82,8 @@ static int dump_one_eventpoll(int lfd, u32 id, const struct fd_parms *p)
|
|||
e.fown = (FownEntry *)&p->fown;
|
||||
|
||||
pr_info_eventpoll("Dumping ", &e);
|
||||
if (pb_write(fdset_fd(glob_fdset, CR_FD_EVENTPOLL),
|
||||
&e, eventpoll_file_entry))
|
||||
if (pb_write_one(fdset_fd(glob_fdset, CR_FD_EVENTPOLL),
|
||||
&e, PB_EVENTPOLL))
|
||||
return -1;
|
||||
|
||||
return parse_fdinfo(lfd, FD_TYPES__EVENTPOLL, dump_eventpoll_entry, &id);
|
||||
|
|
|
|||
2
fifo.c
2
fifo.c
|
|
@ -57,7 +57,7 @@ static int dump_one_fifo(int lfd, u32 id, const struct fd_parms *p)
|
|||
e.id = id;
|
||||
e.pipe_id = pipe_id(p);
|
||||
|
||||
if (pb_write(img, &e, fifo_entry))
|
||||
if (pb_write_one(img, &e, PB_FIFO))
|
||||
return -1;
|
||||
|
||||
return dump_one_pipe_data(&pd_fifo, lfd, p);
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ static int dump_ghost_file(int _fd, u32 id, const struct stat *st)
|
|||
gfe.gid = st->st_gid;
|
||||
gfe.mode = st->st_mode;
|
||||
|
||||
if (pb_write(img, &gfe, ghost_file_entry))
|
||||
if (pb_write_one(img, &gfe, PB_GHOST_FILE))
|
||||
return -1;
|
||||
|
||||
if (S_ISREG(st->st_mode)) {
|
||||
|
|
@ -254,8 +254,8 @@ dump_entry:
|
|||
rpe.orig_id = id;
|
||||
rpe.remap_id = gf->id | REMAP_GHOST;
|
||||
|
||||
return pb_write(fdset_fd(glob_fdset, CR_FD_REMAP_FPATH),
|
||||
&rpe, remap_file_path_entry);
|
||||
return pb_write_one(fdset_fd(glob_fdset, CR_FD_REMAP_FPATH),
|
||||
&rpe, PB_REMAP_FPATH);
|
||||
}
|
||||
|
||||
static int check_path_remap(char *rpath, const struct stat *ost, int lfd, u32 id)
|
||||
|
|
@ -332,7 +332,7 @@ int dump_one_reg_file(int lfd, u32 id, const struct fd_parms *p)
|
|||
|
||||
rfd = fdset_fd(glob_fdset, CR_FD_REG_FILES);
|
||||
|
||||
return pb_write(rfd, &rfe, reg_file_entry);
|
||||
return pb_write_one(rfd, &rfe, PB_REG_FILES);
|
||||
}
|
||||
|
||||
static const struct fdtype_ops regfile_ops = {
|
||||
|
|
|
|||
2
image.c
2
image.c
|
|
@ -52,7 +52,7 @@ int write_img_inventory(void)
|
|||
|
||||
he.img_version = CRTOOLS_IMAGES_V1;
|
||||
|
||||
if (pb_write(fd, &he, inventory_entry) < 0)
|
||||
if (pb_write_one(fd, &he, PB_INVENTORY) < 0)
|
||||
return -1;
|
||||
|
||||
close(fd);
|
||||
|
|
|
|||
|
|
@ -67,8 +67,6 @@ extern int pb_read_object_with_header(int fd, void **pobj,
|
|||
bool eof);
|
||||
|
||||
#define PB_UNPACK_TYPECHECK(__op, __fn) ({ if (0) *__op = __fn##__unpack(NULL, 0, NULL); (pb_unpack_t)&__fn##__unpack; })
|
||||
#define PB_PACK_TYPECHECK(__o, __fn) ({ if (0) __fn##__pack(__o, NULL); (pb_pack_t)&__fn##__pack; })
|
||||
#define PB_GPS_TYPECHECK(__o, __fn) ({ if (0) __fn##__get_packed_size(__o); (pb_getpksize_t)&__fn##__get_packed_size; })
|
||||
#define PB_FREE_TYPECHECK(__o, __fn) ({ if (0) __fn##__free_unpacked(__o, NULL); (pb_free_t)&__fn##__free_unpacked; })
|
||||
|
||||
void cr_pb_init(void);
|
||||
|
|
@ -81,14 +79,7 @@ void cr_pb_init(void);
|
|||
pb_read_object_with_header(__fd, (void **)__obj_pptr, \
|
||||
PB_UNPACK_TYPECHECK(__obj_pptr, __proto_message_name), true)
|
||||
|
||||
extern int pb_write_object_with_header(int fd, void *obj,
|
||||
pb_getpksize_t getpksize,
|
||||
pb_pack_t pack);
|
||||
|
||||
#define pb_write(__fd, __obj, __proto_message_name) \
|
||||
pb_write_object_with_header(__fd, __obj, \
|
||||
PB_GPS_TYPECHECK(__obj, __proto_message_name), \
|
||||
PB_PACK_TYPECHECK(__obj, __proto_message_name))
|
||||
extern int pb_write_one(int fd, void *obj, int type);
|
||||
|
||||
#define pb_pksize(__obj, __proto_message_name) \
|
||||
(__proto_message_name ##__get_packed_size(__obj) + sizeof(u32))
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ static int dump_inotify_entry(union fdinfo_entries *e, void *arg)
|
|||
pr_info("\t[fhandle] bytes 0x%08x type 0x%08x __handle 0x%016lx:0x%016lx\n",
|
||||
we->f_handle->bytes, we->f_handle->type,
|
||||
we->f_handle->handle[0], we->f_handle->handle[1]);
|
||||
return pb_write(fdset_fd(glob_fdset, CR_FD_INOTIFY_WD), we, inotify_wd_entry);
|
||||
return pb_write_one(fdset_fd(glob_fdset, CR_FD_INOTIFY_WD), we, PB_INOTIFY_WD);
|
||||
}
|
||||
|
||||
static int dump_one_inotify(int lfd, u32 id, const struct fd_parms *p)
|
||||
|
|
@ -89,7 +89,7 @@ static int dump_one_inotify(int lfd, u32 id, const struct fd_parms *p)
|
|||
ie.fown = (FownEntry *)&p->fown;
|
||||
|
||||
pr_info("inotify: id 0x%08x flags 0x%08x\n", ie.id, ie.flags);
|
||||
if (pb_write(fdset_fd(glob_fdset, CR_FD_INOTIFY), &ie, inotify_file_entry))
|
||||
if (pb_write_one(fdset_fd(glob_fdset, CR_FD_INOTIFY), &ie, PB_INOTIFY))
|
||||
return -1;
|
||||
|
||||
return parse_fdinfo(lfd, FD_TYPES__INOTIFY, dump_inotify_entry, &id);
|
||||
|
|
|
|||
10
ipc_ns.c
10
ipc_ns.c
|
|
@ -134,7 +134,7 @@ static int dump_ipc_sem_desc(int fd, int id, const struct semid_ds *ds)
|
|||
fill_ipc_desc(id, sem.desc, &ds->sem_perm);
|
||||
pr_info_ipc_sem_entry(&sem);
|
||||
|
||||
ret = pb_write(fd, &sem, ipc_sem_entry);
|
||||
ret = pb_write_one(fd, &sem, PB_IPCNS_SEM);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to write IPC semaphores set\n");
|
||||
return ret;
|
||||
|
|
@ -222,7 +222,7 @@ static int dump_ipc_msg_queue_messages(int fd, const IpcMsgEntry *entry, size_t
|
|||
|
||||
pr_info_ipc_msg(msg_nr, &msg);
|
||||
|
||||
ret = pb_write(fd, &msg, ipc_msg);
|
||||
ret = pb_write_one(fd, &msg, PB_IPCNS_MSG);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to write IPC message header\n");
|
||||
break;
|
||||
|
|
@ -254,7 +254,7 @@ static int dump_ipc_msg_queue(int fd, int id, const struct msqid_ds *ds)
|
|||
|
||||
pr_info_ipc_msg_entry(&msg);
|
||||
|
||||
ret = pb_write(fd, &msg, ipc_msg_entry);
|
||||
ret = pb_write_one(fd, &msg, PB_IPCNS_MSG_ENT);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to write IPC message queue\n");
|
||||
return ret;
|
||||
|
|
@ -361,7 +361,7 @@ static int dump_ipc_shm_seg(int fd, int id, const struct shmid_ds *ds)
|
|||
fill_ipc_desc(id, shm.desc, &ds->shm_perm);
|
||||
pr_info_ipc_shm(&shm);
|
||||
|
||||
ret = pb_write(fd, &shm, ipc_shm_entry);
|
||||
ret = pb_write_one(fd, &shm, PB_IPCNS_SHM);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to write IPC shared memory segment\n");
|
||||
return ret;
|
||||
|
|
@ -422,7 +422,7 @@ static int dump_ipc_var(int fd)
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = pb_write(fd, &var, ipc_var_entry);
|
||||
ret = pb_write_one(fd, &var, PB_IPCNS_VAR);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to write IPC variables\n");
|
||||
goto err;
|
||||
|
|
|
|||
2
mount.c
2
mount.c
|
|
@ -248,7 +248,7 @@ static int dump_one_mountpoint(struct mount_info *pm, int fd)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (pb_write(fd, &me, mnt_entry))
|
||||
if (pb_write_one(fd, &me, PB_MOUNTPOINTS))
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
2
net.c
2
net.c
|
|
@ -42,7 +42,7 @@ static int dump_one_netdev(int type, struct nlmsghdr *h, struct ifinfomsg *ifi,
|
|||
netdev.flags = ifi->ifi_flags;
|
||||
netdev.name = RTA_DATA(tb[IFLA_IFNAME]);
|
||||
|
||||
return pb_write(fdset_fd(fds, CR_FD_NETDEV), &netdev, net_device_entry);
|
||||
return pb_write_one(fdset_fd(fds, CR_FD_NETDEV), &netdev, PB_NETDEV);
|
||||
}
|
||||
|
||||
static int dump_one_link(struct nlmsghdr *hdr, void *arg)
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ int parasite_dump_sigacts_seized(struct parasite_ctl *ctl, struct cr_fdset *cr_f
|
|||
ASSIGN_TYPED(se.restorer, args.sas[i].rt_sa_restorer);
|
||||
ASSIGN_TYPED(se.mask, args.sas[i].rt_sa_mask.sig[0]);
|
||||
|
||||
if (pb_write(fd, &se, sa_entry) < 0)
|
||||
if (pb_write_one(fd, &se, PB_SIGACT) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -486,7 +486,7 @@ static int dump_one_timer(struct itimerval *v, int fd)
|
|||
ie.vsec = v->it_value.tv_sec;
|
||||
ie.vusec = v->it_value.tv_sec;
|
||||
|
||||
return pb_write(fd, &ie, itimer_entry);
|
||||
return pb_write_one(fd, &ie, PB_ITIMERS);
|
||||
}
|
||||
|
||||
int parasite_dump_itimers_seized(struct parasite_ctl *ctl, struct cr_fdset *cr_fdset)
|
||||
|
|
|
|||
4
pipes.c
4
pipes.c
|
|
@ -397,7 +397,7 @@ int dump_one_pipe_data(struct pipe_data_dump *pd, int lfd, const struct fd_parms
|
|||
pde.pipe_id = pipe_id(p);
|
||||
pde.bytes = bytes;
|
||||
|
||||
if (pb_write(img, &pde, pipe_data_entry))
|
||||
if (pb_write_one(img, &pde, PB_PIPES_DATA))
|
||||
goto err_close;
|
||||
|
||||
wrote = splice(steal_pipe[0], NULL, img, NULL, bytes, 0);
|
||||
|
|
@ -439,7 +439,7 @@ static int dump_one_pipe(int lfd, u32 id, const struct fd_parms *p)
|
|||
pe.flags = p->flags;
|
||||
pe.fown = (FownEntry *)&p->fown;
|
||||
|
||||
if (pb_write(fdset_fd(glob_fdset, CR_FD_PIPES), &pe, pipe_entry))
|
||||
if (pb_write_one(fdset_fd(glob_fdset, CR_FD_PIPES), &pe, PB_PIPES))
|
||||
return -1;
|
||||
|
||||
return dump_one_pipe_data(&pd_pipes, lfd, p);
|
||||
|
|
|
|||
14
protobuf.c
14
protobuf.c
|
|
@ -52,6 +52,9 @@ struct cr_pb_message_desc {
|
|||
const ProtobufCMessageDescriptor *pb_desc;
|
||||
};
|
||||
|
||||
#define PB_PACK_TYPECHECK(__o, __fn) ({ if (0) __fn##__pack(__o, NULL); (pb_pack_t)&__fn##__pack; })
|
||||
#define PB_GPS_TYPECHECK(__o, __fn) ({ if (0) __fn##__get_packed_size(__o); (pb_getpksize_t)&__fn##__get_packed_size; })
|
||||
|
||||
/*
|
||||
* This should be explicitly "called" to do type-checking
|
||||
*/
|
||||
|
|
@ -406,21 +409,26 @@ err:
|
|||
* 0 on success
|
||||
* -1 on error
|
||||
*/
|
||||
int pb_write_object_with_header(int fd, void *obj, pb_getpksize_t getpksize, pb_pack_t pack)
|
||||
int pb_write_one(int fd, void *obj, int type)
|
||||
{
|
||||
u8 local[PB_PKOBJ_LOCAL_SIZE];
|
||||
void *buf = (void *)&local;
|
||||
u32 size, packed;
|
||||
int ret = -1;
|
||||
|
||||
size = getpksize(obj);
|
||||
if (!cr_pb_descs[type].pb_desc) {
|
||||
pr_err("Wron object requested %d\n", type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
size = cr_pb_descs[type].getpksize(obj);
|
||||
if (size > (u32)sizeof(local)) {
|
||||
buf = xmalloc(size);
|
||||
if (!buf)
|
||||
goto err;
|
||||
}
|
||||
|
||||
packed = pack(obj, buf);
|
||||
packed = cr_pb_descs[type].pack(obj, buf);
|
||||
if (packed != size) {
|
||||
pr_err("Failed packing PB object %p\n", obj);
|
||||
goto err;
|
||||
|
|
|
|||
2
pstree.c
2
pstree.c
|
|
@ -102,7 +102,7 @@ int dump_pstree(struct pstree_item *root_item)
|
|||
for (i = 0; i < item->nr_threads; i++)
|
||||
e.threads[i] = item->threads[i].virt;
|
||||
|
||||
ret = pb_write(pstree_fd, &e, pstree_entry);
|
||||
ret = pb_write_one(pstree_fd, &e, PB_PSTREE);
|
||||
xfree(e.threads);
|
||||
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ static int dump_signalfd_entry(union fdinfo_entries *e, void *arg)
|
|||
e->sfd.flags = da->p->flags;
|
||||
e->sfd.fown = (FownEntry *)&da->p->fown;
|
||||
|
||||
return pb_write(fdset_fd(glob_fdset, CR_FD_SIGNALFD),
|
||||
&e->sfd, signalfd_entry);
|
||||
return pb_write_one(fdset_fd(glob_fdset, CR_FD_SIGNALFD),
|
||||
&e->sfd, PB_SIGNALFD);
|
||||
}
|
||||
|
||||
static int dump_one_signalfd(int lfd, u32 id, const struct fd_parms *p)
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ static int dump_one_inet_fd(int lfd, u32 id, const struct fd_parms *p)
|
|||
if (dump_socket_opts(lfd, &skopts))
|
||||
goto err;
|
||||
|
||||
if (pb_write(fdset_fd(glob_fdset, CR_FD_INETSK), &ie, inet_sk_entry))
|
||||
if (pb_write_one(fdset_fd(glob_fdset, CR_FD_INETSK), &ie, PB_INETSK))
|
||||
goto err;
|
||||
|
||||
pr_info("Dumping inet socket at %d\n", p->fd);
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ int dump_sk_queue(int sock_fd, int sock_id)
|
|||
goto err_set_sock;
|
||||
}
|
||||
|
||||
ret = pb_write(fdset_fd(glob_fdset, CR_FD_SK_QUEUES), &pe, sk_packet_entry);
|
||||
ret = pb_write_one(fdset_fd(glob_fdset, CR_FD_SK_QUEUES), &pe, PB_SK_QUEUES);
|
||||
if (ret < 0) {
|
||||
ret = -EIO;
|
||||
goto err_set_sock;
|
||||
|
|
|
|||
2
sk-tcp.c
2
sk-tcp.c
|
|
@ -274,7 +274,7 @@ static int dump_tcp_conn_state(struct inet_sk_desc *sk)
|
|||
if (img_fd < 0)
|
||||
goto err_img;
|
||||
|
||||
ret = pb_write(img_fd, &tse, tcp_stream_entry);
|
||||
ret = pb_write_one(img_fd, &tse, PB_TCP_STREAM);
|
||||
if (ret < 0)
|
||||
goto err_iw;
|
||||
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ static int dump_one_unix_fd(int lfd, u32 id, const struct fd_parms *p)
|
|||
if (dump_socket_opts(lfd, &skopts))
|
||||
goto err;
|
||||
|
||||
if (pb_write(fdset_fd(glob_fdset, CR_FD_UNIXSK), &ue, unix_sk_entry))
|
||||
if (pb_write_one(fdset_fd(glob_fdset, CR_FD_UNIXSK), &ue, PB_UNIXSK))
|
||||
goto err;
|
||||
|
||||
if (sk->rqlen != 0 && !(sk->type == SOCK_STREAM &&
|
||||
|
|
@ -414,7 +414,7 @@ int fix_external_unix_sockets(void)
|
|||
|
||||
show_one_unix("Dumping extern", sk);
|
||||
|
||||
if (pb_write(fdset_fd(glob_fdset, CR_FD_UNIXSK), &e, unix_sk_entry))
|
||||
if (pb_write_one(fdset_fd(glob_fdset, CR_FD_UNIXSK), &e, PB_UNIXSK))
|
||||
goto err;
|
||||
|
||||
show_one_unix_img("Dumped extern", &e);
|
||||
|
|
|
|||
2
uts_ns.c
2
uts_ns.c
|
|
@ -31,7 +31,7 @@ int dump_uts_ns(int ns_pid, struct cr_fdset *fdset)
|
|||
ue.nodename = ubuf.nodename;
|
||||
ue.domainname = ubuf.domainname;
|
||||
|
||||
return pb_write(fdset_fd(fdset, CR_FD_UTSNS), &ue, utsns_entry);
|
||||
return pb_write_one(fdset_fd(fdset, CR_FD_UTSNS), &ue, PB_UTSNS);
|
||||
}
|
||||
|
||||
int prepare_utsns(int pid)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue