summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/dvb-core/dmxdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/dvb/dvb-core/dmxdev.c')
-rw-r--r--linux/drivers/media/dvb/dvb-core/dmxdev.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dmxdev.c b/linux/drivers/media/dvb/dvb-core/dmxdev.c
index 56fd12ca4..5433e23f9 100644
--- a/linux/drivers/media/dvb/dvb-core/dmxdev.c
+++ b/linux/drivers/media/dvb/dvb-core/dmxdev.c
@@ -21,10 +21,15 @@
*
*/
-#include <linux/vmalloc.h>
+#include <asm/uaccess.h>
+#include <asm/system.h>
+#include <linux/spinlock.h>
+#include <linux/slab.h>
#include <linux/module.h>
+#include <linux/sched.h>
#include <linux/poll.h>
-#include <asm/uaccess.h>
+#include <linux/ioctl.h>
+#include <linux/wait.h>
#include "dmxdev.h"
#include "compat.h"
@@ -203,7 +208,7 @@ static int dvb_dvr_open(struct inode *inode, struct file *file)
if ((file->f_flags&O_ACCMODE)==O_RDONLY) {
dvb_dmxdev_buffer_init(&dmxdev->dvr_buffer);
dmxdev->dvr_buffer.size=DVR_BUFFER_SIZE;
- dmxdev->dvr_buffer.data=vmalloc(DVR_BUFFER_SIZE);
+ dmxdev->dvr_buffer.data=kmalloc(DVR_BUFFER_SIZE, GFP_KERNEL);
if (!dmxdev->dvr_buffer.data) {
up(&dmxdev->mutex);
return -ENOMEM;
@@ -251,7 +256,7 @@ static int dvb_dvr_release(struct inode *inode, struct file *file)
spin_lock_irq(&dmxdev->lock);
dmxdev->dvr_buffer.data=0;
spin_unlock_irq(&dmxdev->lock);
- vfree(mem);
+ kfree(mem);
}
}
up(&dmxdev->mutex);
@@ -316,10 +321,10 @@ dvb_dmxdev_set_buffer_size(dmxdev_filter_t *dmxdevfilter, unsigned long size)
buf->pwrite=buf->pread=0;
spin_unlock_irq(&dmxdevfilter->dev->lock);
if (mem)
- vfree(mem);
+ kfree(mem);
if (buf->size) {
- mem=vmalloc(dmxdevfilter->buffer.size);
+ mem=kmalloc(dmxdevfilter->buffer.size, GFP_KERNEL);
if (!mem)
return -ENOMEM;
spin_lock_irq(&dmxdevfilter->dev->lock);
@@ -481,7 +486,7 @@ int dvb_dmxdev_feed_restart(dmxdev_filter_t *filter)
{
int i;
dmxdev_t *dmxdev = filter->dev;
- uint16_t pid = filter->params.sec.pid;
+ u16 pid = filter->params.sec.pid;
for (i=0; i<dmxdev->filternum; i++)
if (dmxdev->filter[i].state>=DMXDEV_STATE_GO &&
@@ -558,7 +563,7 @@ dvb_dmxdev_filter_start(dmxdev_filter_t *filter)
dvb_dmxdev_filter_stop(filter);
if (!(mem = filter->buffer.data)) {
- mem = vmalloc(filter->buffer.size);
+ mem = kmalloc(filter->buffer.size, GFP_KERNEL);
spin_lock_irq(&filter->dev->lock);
filter->buffer.data=mem;
spin_unlock_irq(&filter->dev->lock);
@@ -762,7 +767,7 @@ int dvb_dmxdev_filter_free(dmxdev_t *dmxdev, dmxdev_filter_t *dmxdevfilter)
spin_lock_irq(&dmxdev->lock);
dmxdevfilter->buffer.data=0;
spin_unlock_irq(&dmxdev->lock);
- vfree(mem);
+ kfree(mem);
}
dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_FREE);
@@ -957,7 +962,7 @@ static int dvb_demux_do_ioctl(struct inode *inode, struct file *file,
ret=-EINVAL;
break;
}
- dmxdev->demux->get_pes_pids(dmxdev->demux, (uint16_t *)parg);
+ dmxdev->demux->get_pes_pids(dmxdev->demux, (u16 *)parg);
break;
case DMX_GET_STC:
@@ -1116,13 +1121,15 @@ dvb_dmxdev_init(dmxdev_t *dmxdev, struct dvb_adapter *dvb_adapter)
if (dmxdev->demux->open(dmxdev->demux)<0)
return -EUSERS;
- dmxdev->filter=vmalloc(dmxdev->filternum*sizeof(dmxdev_filter_t));
+ dmxdev->filter=kmalloc(dmxdev->filternum*sizeof(dmxdev_filter_t),
+ GFP_KERNEL);
+
if (!dmxdev->filter)
return -ENOMEM;
- dmxdev->dvr=vmalloc(dmxdev->filternum*sizeof(dmxdev_dvr_t));
+ dmxdev->dvr=kmalloc(dmxdev->filternum*sizeof(dmxdev_dvr_t), GFP_KERNEL);
if (!dmxdev->dvr) {
- vfree(dmxdev->filter);
+ kfree(dmxdev->filter);
dmxdev->filter=0;
return -ENOMEM;
}
@@ -1152,11 +1159,11 @@ dvb_dmxdev_release(dmxdev_t *dmxdev)
dvb_unregister_device(dmxdev->dvbdev);
dvb_unregister_device(dmxdev->dvr_dvbdev);
if (dmxdev->filter) {
- vfree(dmxdev->filter);
+ kfree(dmxdev->filter);
dmxdev->filter=0;
}
if (dmxdev->dvr) {
- vfree(dmxdev->dvr);
+ kfree(dmxdev->dvr);
dmxdev->dvr=0;
}
dmxdev->demux->close(dmxdev->demux);