fs/file_table.c:fput(): add comment
A missed update to "fput: task_work_add() can fail if the caller has passed exit_task_work()". Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Andrey Vagin <avagin@openvz.org> Cc: David Howells <dhowells@redhat.com> Cc: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
bb458c644a
commit
64372501e2
|
@ -313,6 +313,12 @@ void fput(struct file *file)
|
||||||
init_task_work(&file->f_u.fu_rcuhead, ____fput);
|
init_task_work(&file->f_u.fu_rcuhead, ____fput);
|
||||||
if (!task_work_add(task, &file->f_u.fu_rcuhead, true))
|
if (!task_work_add(task, &file->f_u.fu_rcuhead, true))
|
||||||
return;
|
return;
|
||||||
|
/*
|
||||||
|
* After this task has run exit_task_work(),
|
||||||
|
* task_work_add() will fail. free_ipc_ns()->
|
||||||
|
* shm_destroy() can do this. Fall through to delayed
|
||||||
|
* fput to avoid leaking *file.
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
spin_lock_irqsave(&delayed_fput_lock, flags);
|
spin_lock_irqsave(&delayed_fput_lock, flags);
|
||||||
list_add(&file->f_u.fu_list, &delayed_fput_list);
|
list_add(&file->f_u.fu_list, &delayed_fput_list);
|
||||||
|
|
Loading…
Reference in New Issue