V4L/DVB: gspca - main: Don't use the PG_Reserved flag for mmapped buffers
Signed-off-by: Jean-François Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
a68f723cef
commit
e795d912d7
@ -506,36 +506,6 @@ static int gspca_is_compressed(__u32 format)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *rvmalloc(long size)
|
|
||||||
{
|
|
||||||
void *mem;
|
|
||||||
unsigned long adr;
|
|
||||||
|
|
||||||
mem = vmalloc_32(size);
|
|
||||||
if (mem != NULL) {
|
|
||||||
adr = (unsigned long) mem;
|
|
||||||
while (size > 0) {
|
|
||||||
SetPageReserved(vmalloc_to_page((void *) adr));
|
|
||||||
adr += PAGE_SIZE;
|
|
||||||
size -= PAGE_SIZE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mem;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rvfree(void *mem, long size)
|
|
||||||
{
|
|
||||||
unsigned long adr;
|
|
||||||
|
|
||||||
adr = (unsigned long) mem;
|
|
||||||
while (size > 0) {
|
|
||||||
ClearPageReserved(vmalloc_to_page((void *) adr));
|
|
||||||
adr += PAGE_SIZE;
|
|
||||||
size -= PAGE_SIZE;
|
|
||||||
}
|
|
||||||
vfree(mem);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int frame_alloc(struct gspca_dev *gspca_dev,
|
static int frame_alloc(struct gspca_dev *gspca_dev,
|
||||||
unsigned int count)
|
unsigned int count)
|
||||||
{
|
{
|
||||||
@ -550,7 +520,7 @@ static int frame_alloc(struct gspca_dev *gspca_dev,
|
|||||||
gspca_dev->frsz = frsz;
|
gspca_dev->frsz = frsz;
|
||||||
if (count > GSPCA_MAX_FRAMES)
|
if (count > GSPCA_MAX_FRAMES)
|
||||||
count = GSPCA_MAX_FRAMES;
|
count = GSPCA_MAX_FRAMES;
|
||||||
gspca_dev->frbuf = rvmalloc(frsz * count);
|
gspca_dev->frbuf = vmalloc_32(frsz * count);
|
||||||
if (!gspca_dev->frbuf) {
|
if (!gspca_dev->frbuf) {
|
||||||
err("frame alloc failed");
|
err("frame alloc failed");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -582,8 +552,7 @@ static void frame_free(struct gspca_dev *gspca_dev)
|
|||||||
|
|
||||||
PDEBUG(D_STREAM, "frame free");
|
PDEBUG(D_STREAM, "frame free");
|
||||||
if (gspca_dev->frbuf != NULL) {
|
if (gspca_dev->frbuf != NULL) {
|
||||||
rvfree(gspca_dev->frbuf,
|
vfree(gspca_dev->frbuf);
|
||||||
gspca_dev->nframes * gspca_dev->frsz);
|
|
||||||
gspca_dev->frbuf = NULL;
|
gspca_dev->frbuf = NULL;
|
||||||
for (i = 0; i < gspca_dev->nframes; i++)
|
for (i = 0; i < gspca_dev->nframes; i++)
|
||||||
gspca_dev->frame[i].data = NULL;
|
gspca_dev->frame[i].data = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user