diff options
Diffstat (limited to 'linux/drivers/media/dvb/dvb-core/dmxdev.c')
-rw-r--r-- | linux/drivers/media/dvb/dvb-core/dmxdev.c | 37 |
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); |