Commit 8c0eef35 authored by Pavel Emelyanov's avatar Pavel Emelyanov

files: Make find_unused_fd work on pstree_item

Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent a314a454
......@@ -569,7 +569,7 @@ static int autofs_dup_pipe(struct pstree_item *task,
struct pipe_info *pi = container_of(ple->desc, struct pipe_info, d);
unsigned flags = O_WRONLY;
new_fd = find_unused_fd(&rsti(task)->used, new_fd);
new_fd = find_unused_fd(task, new_fd);
if (dup_pipe_info(pi, flags, pi->d.ops) < 0) {
pr_err("Failed to dup pipe entry ID %#x PIPE_ID %#x\n",
......@@ -911,7 +911,7 @@ static int autofs_create_pipe(struct pstree_item *task, autofs_info_t *i,
struct file_desc_ops *ops;
PipeEntry *pe;
fd = find_unused_fd(&rsti(task)->used, fd);
fd = find_unused_fd(task, fd);
ops = shmalloc(sizeof(*ops));
if (!ops)
......
......@@ -128,11 +128,14 @@ void collect_task_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri)
list_add_tail(&new_fle->used_list, &fle->used_list);
}
unsigned int find_unused_fd(struct list_head *head, int hint_fd)
unsigned int find_unused_fd(struct pstree_item *task, int hint_fd)
{
struct list_head *head;
struct fdinfo_list_entry *fle;
int fd = 0, prev_fd;
head = &rsti(task)->used;
if ((hint_fd >= 0) && (!find_used_fd(head, hint_fd))) {
fd = hint_fd;
goto out;
......
......@@ -117,7 +117,7 @@ struct file_desc_ops {
void collect_task_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri);
unsigned int find_unused_fd(struct list_head *head, int hint_fd);
unsigned int find_unused_fd(struct pstree_item *, int hint_fd);
struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd);
struct file_desc {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment