summaryrefslogtreecommitdiff
path: root/drivers/misc/modem_audio/mad.c
diff options
context:
space:
mode:
authorBenn Pörscke <benn.porscke@stericsson.com>2011-12-16 15:04:55 +0100
committerBenn Pörscke <benn.porscke@stericsson.com>2011-12-16 15:04:55 +0100
commit93f379e6cfadfded0d262192ca69d1abc096d90e (patch)
tree43f180e31ee26ee94f7d2dd559132c30c6476b4d /drivers/misc/modem_audio/mad.c
parent77955e37bd395f789900b8e180991ad67cabd899 (diff)
Change-Id: I2fcf46d1fc4b0cd4c61e5be3654c43b80db86015
Diffstat (limited to 'drivers/misc/modem_audio/mad.c')
-rw-r--r--drivers/misc/modem_audio/mad.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/drivers/misc/modem_audio/mad.c b/drivers/misc/modem_audio/mad.c
index 62bef3c75fd..88bbcaa3c9c 100644
--- a/drivers/misc/modem_audio/mad.c
+++ b/drivers/misc/modem_audio/mad.c
@@ -459,19 +459,15 @@ static int mad_close(struct inode *ino, struct file *filp)
{
dev_dbg(mad_dev.this_device, "%s", __func__);
- if (mad->dsp_shm_write_ptr != NULL) {
- iounmap(mad->dsp_shm_write_ptr);
- mad->dsp_shm_write_ptr = NULL;
- }
-
- if (mad->dsp_shm_read_ptr != NULL) {
- iounmap(mad->dsp_shm_read_ptr);
- mad->dsp_shm_read_ptr = NULL;
+ if (mbox_channel_deregister(CHANNEL_NUM_RX)) {
+ dev_err(mad_dev.this_device, "%s:deregister err", __func__);
+ return -EFAULT;
}
-
kfree(mad->rx_buff);
kfree(mad->tx_buff);
mad->data_written = 0;
+ mad->rx_buffer_num = 0;
+ mad->rx_buffer_read = 0;
mad->open_check = false;
return 0;
@@ -495,7 +491,16 @@ static void __exit mad_exit(void)
{
dev_dbg(mad_dev.this_device, "%s", __func__);
- kfree(mad);
+ if (mad->dsp_shm_write_ptr != NULL) {
+ iounmap(mad->dsp_shm_write_ptr);
+ mad->dsp_shm_write_ptr = NULL;
+ }
+
+ if (mad->dsp_shm_read_ptr != NULL) {
+ iounmap(mad->dsp_shm_read_ptr);
+ mad->dsp_shm_read_ptr = NULL;
+ }
- misc_deregister(&mad_dev);
+ kfree(mad);
+ misc_deregister(&mad_dev);
}