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 cid;
|
||||||
int ssrcount;
|
int ssrcount;
|
||||||
int pd;
|
int pd;
|
||||||
|
int file_close;
|
||||||
struct fastrpc_apps *apps;
|
struct fastrpc_apps *apps;
|
||||||
struct fastrpc_perf perf;
|
struct fastrpc_perf perf;
|
||||||
struct dentry *debugfs_file;
|
struct dentry *debugfs_file;
|
||||||
|
@ -2195,6 +2196,9 @@ static int fastrpc_file_free(struct fastrpc_file *fl)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
(void)fastrpc_release_current_dsp_process(fl);
|
(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_context_list_dtor(fl);
|
||||||
fastrpc_buf_list_free(fl);
|
fastrpc_buf_list_free(fl);
|
||||||
hlist_for_each_entry_safe(map, n, &fl->maps, hn) {
|
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.fds = 0;
|
||||||
p.inv.attrs = 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) {
|
switch (ioctl_num) {
|
||||||
case FASTRPC_IOCTL_INVOKE:
|
case FASTRPC_IOCTL_INVOKE:
|
||||||
|
|
Loading…
Add table
Reference in a new issue