Revert "Revert "CHROMIUM: android: binder: Fix potential scheduling-while-atomic""
This reverts commit 13c17d0179
.
Change-Id: I8c3a7eefb72b85c0dd05996c2705636fcbc871f7
This commit is contained in:
parent
c71ad0f6b3
commit
6a3b9c4984
1 changed files with 10 additions and 2 deletions
|
@ -417,6 +417,7 @@ static int task_get_unused_fd_flags(struct binder_proc *proc, int flags)
|
||||||
struct files_struct *files = proc->files;
|
struct files_struct *files = proc->files;
|
||||||
unsigned long rlim_cur;
|
unsigned long rlim_cur;
|
||||||
unsigned long irqs;
|
unsigned long irqs;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (files == NULL)
|
if (files == NULL)
|
||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
|
@ -427,7 +428,11 @@ static int task_get_unused_fd_flags(struct binder_proc *proc, int flags)
|
||||||
rlim_cur = task_rlimit(proc->tsk, RLIMIT_NOFILE);
|
rlim_cur = task_rlimit(proc->tsk, RLIMIT_NOFILE);
|
||||||
unlock_task_sighand(proc->tsk, &irqs);
|
unlock_task_sighand(proc->tsk, &irqs);
|
||||||
|
|
||||||
return __alloc_fd(files, 0, rlim_cur, flags);
|
preempt_enable_no_resched();
|
||||||
|
ret = __alloc_fd(files, 0, rlim_cur, flags);
|
||||||
|
preempt_disable();
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -436,8 +441,11 @@ static int task_get_unused_fd_flags(struct binder_proc *proc, int flags)
|
||||||
static void task_fd_install(
|
static void task_fd_install(
|
||||||
struct binder_proc *proc, unsigned int fd, struct file *file)
|
struct binder_proc *proc, unsigned int fd, struct file *file)
|
||||||
{
|
{
|
||||||
if (proc->files)
|
if (proc->files) {
|
||||||
|
preempt_enable_no_resched();
|
||||||
__fd_install(proc->files, fd, file);
|
__fd_install(proc->files, fd, file);
|
||||||
|
preempt_disable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue