summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/plat-omap/include/syslink/ipc_ioctl.h1
-rw-r--r--drivers/dsp/syslink/multicore_ipc/ipc_drv.c5
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/plat-omap/include/syslink/ipc_ioctl.h b/arch/arm/plat-omap/include/syslink/ipc_ioctl.h
index 7230baf4ef8..ea2fdeac952 100644
--- a/arch/arm/plat-omap/include/syslink/ipc_ioctl.h
+++ b/arch/arm/plat-omap/include/syslink/ipc_ioctl.h
@@ -100,6 +100,7 @@ struct ipc_process_context {
spinlock_t res_lock;
struct ipc_device *dev;
+ pid_t tgid;
};
void add_pr_res(struct ipc_process_context *pr_ctxt, unsigned int cmd,
diff --git a/drivers/dsp/syslink/multicore_ipc/ipc_drv.c b/drivers/dsp/syslink/multicore_ipc/ipc_drv.c
index d3c5a1b279e..23852f66f49 100644
--- a/drivers/dsp/syslink/multicore_ipc/ipc_drv.c
+++ b/drivers/dsp/syslink/multicore_ipc/ipc_drv.c
@@ -186,6 +186,7 @@ static int ipc_open(struct inode *inode, struct file *filp)
dev = container_of(inode->i_cdev, struct ipc_device,
cdev);
pr_ctxt->dev = dev;
+ pr_ctxt->tgid = current->tgid;
filp->private_data = pr_ctxt;
}
@@ -213,9 +214,9 @@ static int ipc_release(struct inode *inode, struct file *filp)
goto err;
}
- ipc_notify_event(IPC_CLOSE, (void *)NULL);
-
pr_ctxt = filp->private_data;
+ ipc_notify_event(IPC_CLOSE, (void *)pr_ctxt->tgid);
+
list_for_each_entry_safe(info, temp, &pr_ctxt->resources, res) {
retval = ipc_release_resource(info->cmd, (ulong)info->data,