Merge "msm: ADSPRPC: avoid sending new requests to dsp while device_release"
This commit is contained in:
commit
8ee12d5cb2
1 changed files with 12 additions and 0 deletions
|
@ -291,6 +291,7 @@ struct fastrpc_file {
|
|||
int cid;
|
||||
int ssrcount;
|
||||
int pd;
|
||||
int file_close;
|
||||
struct fastrpc_apps *apps;
|
||||
struct fastrpc_perf perf;
|
||||
struct dentry *debugfs_file;
|
||||
|
@ -2195,6 +2196,9 @@ static int fastrpc_file_free(struct fastrpc_file *fl)
|
|||
return 0;
|
||||
}
|
||||
(void)fastrpc_release_current_dsp_process(fl);
|
||||
spin_lock(&fl->hlock);
|
||||
fl->file_close = 1;
|
||||
spin_unlock(&fl->hlock);
|
||||
fastrpc_context_list_dtor(fl);
|
||||
fastrpc_buf_list_free(fl);
|
||||
hlist_for_each_entry_safe(map, n, &fl->maps, hn) {
|
||||
|
@ -2583,6 +2587,14 @@ static long fastrpc_device_ioctl(struct file *file, unsigned int ioctl_num,
|
|||
|
||||
p.inv.fds = 0;
|
||||
p.inv.attrs = 0;
|
||||
spin_lock(&fl->hlock);
|
||||
if (fl->file_close == 1) {
|
||||
err = EBADF;
|
||||
pr_warn("ADSPRPC: fastrpc_device_release is happening, So not sending any new requests to DSP");
|
||||
spin_unlock(&fl->hlock);
|
||||
goto bail;
|
||||
}
|
||||
spin_unlock(&fl->hlock);
|
||||
|
||||
switch (ioctl_num) {
|
||||
case FASTRPC_IOCTL_INVOKE:
|
||||
|
|
Loading…
Add table
Reference in a new issue