msm: ADSPRPC: avoid sending new requests to dsp while device_release

When fastrpc_device_release is in progress, don't send any new
requets to DSP

Change-Id: I4d9e2f06485cde6dbd3d7aef402e3e853e0be998
Acked-by: Chenna Kesava Raju <chennak@qti.qualcomm.com>
Signed-off-by: Tharun Kumar Merugu <mtharu@codeaurora.org>
This commit is contained in:
tharun kumar 2017-07-03 17:07:03 +05:30 committed by Gerrit - the friendly Code Review server
parent b1b3c5a65e
commit 86ad5044c3

View file

@ -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: