lkml.org 
[lkml]   [1999]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Re: 2.3.25-pre1 Compile Fixes
On Thu, 28 Oct 1999, Jeremy Katz wrote:

> Attached is a diff to fix compilation by changing instances of
> vma->vm_offset to vma->pg_off. Also changes instances of page->offset
> to pg_offset. Haven't tested all the drivers, but the ones I needed the
> fix for have worked since.

Please read the comment in linux/include/linux/mm.h -- the meaning of
vm_pgoff is different from vm_offset: it's a PAGE_SIZE offset, not a byte
offset. Several place (esp the framebuffers) were wrong in your patch.
Here should be the correct fixes (completely untested, but hopefully
correct).

-ben

diff -ur clean/2.3.25pre1/arch/sparc/kernel/signal.c 2.3.25pre1/arch/sparc/kernel/signal.c
--- clean/2.3.25pre1/arch/sparc/kernel/signal.c Tue Aug 31 14:23:29 1999
+++ 2.3.25pre1/arch/sparc/kernel/signal.c Fri Oct 29 13:43:16 1999
@@ -1050,7 +1050,7 @@
ino = map->vm_file->f_dentry->d_inode->i_ino;
line = d_path(map->vm_file->f_dentry, buffer, PAGE_SIZE);
}
- printk(MAPS_LINE_FORMAT, map->vm_start, map->vm_end, str, map->vm_offset,
+ printk(MAPS_LINE_FORMAT, map->vm_start, map->vm_end, str, map->vm_pgoff << PAGE_SHIFT,
kdevname(dev), ino);
if (map->vm_file != NULL)
printk("%s\n", line);
diff -ur clean/2.3.25pre1/arch/sparc64/kernel/signal.c 2.3.25pre1/arch/sparc64/kernel/signal.c
--- clean/2.3.25pre1/arch/sparc64/kernel/signal.c Wed Sep 8 14:14:32 1999
+++ 2.3.25pre1/arch/sparc64/kernel/signal.c Fri Oct 29 13:42:18 1999
@@ -618,7 +618,7 @@
ino = map->vm_file->f_dentry->d_inode->i_ino;
line = d_path(map->vm_file->f_dentry, buffer, PAGE_SIZE);
}
- printk(MAPS_LINE_FORMAT, map->vm_start, map->vm_end, str, map->vm_offset,
+ printk(MAPS_LINE_FORMAT, map->vm_start, map->vm_end, str, map->vm_pgoff << PAGE_SHIFT,
kdevname(dev), ino);
if (map->vm_file != NULL)
printk("%s\n", line);
diff -ur clean/2.3.25pre1/arch/sparc64/kernel/signal32.c 2.3.25pre1/arch/sparc64/kernel/signal32.c
--- clean/2.3.25pre1/arch/sparc64/kernel/signal32.c Tue Aug 3 01:07:16 1999
+++ 2.3.25pre1/arch/sparc64/kernel/signal32.c Fri Oct 29 13:41:58 1999
@@ -1226,7 +1226,7 @@
ino = map->vm_file->f_dentry->d_inode->i_ino;
line = d_path(map->vm_file->f_dentry, buffer, PAGE_SIZE);
}
- printk(MAPS_LINE_FORMAT, map->vm_start, map->vm_end, str, map->vm_offset,
+ printk(MAPS_LINE_FORMAT, map->vm_start, map->vm_end, str, map->vm_pgoff << PAGE_SHIFT,
kdevname(dev), ino);
if (map->vm_file != NULL)
printk("%s\n", line);
diff -ur clean/2.3.25pre1/drivers/char/drm/proc.c 2.3.25pre1/drivers/char/drm/proc.c
--- clean/2.3.25pre1/drivers/char/drm/proc.c Thu Oct 28 14:09:24 1999
+++ 2.3.25pre1/drivers/char/drm/proc.c Fri Oct 29 13:43:07 1999
@@ -382,7 +382,7 @@
vma->vm_flags & VM_MAYSHARE ? 's' : 'p',
vma->vm_flags & VM_LOCKED ? 'l' : '-',
vma->vm_flags & VM_IO ? 'i' : '-',
- vma->vm_offset );
+ vma->vm_pgoff << PAGE_SHIFT );
#if defined(__i386__)
pgprot = pgprot_val(vma->vm_page_prot);
DRM_PROC_PRINT(" %c%c%c%c%c%c%c%c%c",
diff -ur clean/2.3.25pre1/drivers/char/drm/vm.c 2.3.25pre1/drivers/char/drm/vm.c
--- clean/2.3.25pre1/drivers/char/drm/vm.c Tue Sep 7 17:51:28 1999
+++ 2.3.25pre1/drivers/char/drm/vm.c Fri Oct 29 14:08:59 1999
@@ -96,7 +96,7 @@
if (address > vma->vm_end) return 0; /* Disallow mremap */
if (!dma->pagelist) return 0; /* Nothing allocated */

- offset = address - vma->vm_start; /* vm_offset should be 0 */
+ offset = address - vma->vm_start; /* vm_pgoff should be 0 */
page = offset >> PAGE_SHIFT;
physical = dma->pagelist[page] + (offset & (~PAGE_MASK));
atomic_inc(&mem_map[MAP_NR(physical)].count); /* Dec. by kernel */
@@ -169,7 +169,7 @@
unsigned long length = vma->vm_end - vma->vm_start;

DRM_DEBUG("start = 0x%lx, end = 0x%lx, offset = 0x%lx\n",
- vma->vm_start, vma->vm_end, vma->vm_offset);
+ vma->vm_start, vma->vm_end, vma->vm_pgoff << PAGE_SHIFT);

/* Length must match exact page count */
if ((length >> PAGE_SHIFT) != dma->page_count) return -EINVAL;
@@ -192,13 +192,17 @@
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
drm_map_t *map = NULL;
+ unsigned long off;
int i;

DRM_DEBUG("start = 0x%lx, end = 0x%lx, offset = 0x%lx\n",
- vma->vm_start, vma->vm_end, vma->vm_offset);
+ vma->vm_start, vma->vm_end, vma->vm_pgoff);

- if (!vma->vm_offset) return drm_mmap_dma(filp, vma);
+ if (!vma->vm_pgoff) return drm_mmap_dma(filp, vma);
+ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
+ return -EINVAL;

+ off = vma->vm_pgoff << PAGE_SHIFT;
/* A sequential search of a linked list is
fine here because: 1) there will only be
about 5-10 entries in the list and, 2) a
@@ -208,7 +212,7 @@
bit longer. */
for (i = 0; i < dev->map_count; i++) {
map = dev->maplist[i];
- if (map->offset == vma->vm_offset) break;
+ if (map->offset == off) break;
}

if (i >= dev->map_count) return -EINVAL;
@@ -222,7 +226,7 @@
switch (map->type) {
case _DRM_FRAME_BUFFER:
case _DRM_REGISTERS:
- if (vma->vm_offset >= __pa(high_memory)) {
+ if (off >= __pa(high_memory)) {
#if defined(__i386__)
if (boot_cpu_data.x86 > 3) {
pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
@@ -232,7 +236,7 @@
vma->vm_flags |= VM_IO; /* not in core dump */
}
if (remap_page_range(vma->vm_start,
- vma->vm_offset,
+ off,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
diff -ur clean/2.3.25pre1/drivers/sbus/char/flash.c 2.3.25pre1/drivers/sbus/char/flash.c
--- clean/2.3.25pre1/drivers/sbus/char/flash.c Tue Aug 31 14:25:33 1999
+++ 2.3.25pre1/drivers/sbus/char/flash.c Fri Oct 29 13:45:58 1999
@@ -36,9 +36,7 @@
{
unsigned long addr;
unsigned long size;
-
- if (vma->vm_offset & ~(PAGE_MASK))
- return -ENXIO;
+ unsigned long off;

if (flash.read_base == flash.write_base) {
addr = flash.read_base;
@@ -58,12 +56,13 @@
return -ENXIO;
}

- if (vma->vm_offset > size)
+ if (vma->vm_pgoff > (size >> PAGE_SHIFT))
return -ENXIO;
- addr += vma->vm_offset;
+ off = vma->vm_pgoff << PAGE_SHIFT;
+ addr += off;

- if (vma->vm_end - (vma->vm_start + vma->vm_offset) > size)
- size = vma->vm_end - (vma->vm_start + vma->vm_offset);
+ if (vma->vm_end - (vma->vm_start + off) > size)
+ size = vma->vm_end - (vma->vm_start + off);

pgprot_val(vma->vm_page_prot) &= ~(_PAGE_CACHE);
pgprot_val(vma->vm_page_prot) |= _PAGE_E;
diff -ur clean/2.3.25pre1/drivers/sbus/char/vfc_dev.c 2.3.25pre1/drivers/sbus/char/vfc_dev.c
--- clean/2.3.25pre1/drivers/sbus/char/vfc_dev.c Wed Jun 9 17:44:25 1999
+++ 2.3.25pre1/drivers/sbus/char/vfc_dev.c Fri Oct 29 13:46:52 1999
@@ -573,7 +573,9 @@
map_size=sizeof(struct vfc_regs);


- if(vma->vm_offset & ~PAGE_MASK) return -ENXIO;
+ if (vma->vm_pgoff)
+ return -ENXIO;
+
vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO | VM_MAYREAD | VM_MAYWRITE | VM_MAYSHARE;
map_offset=(unsigned int)dev->phys_regs;
ret = io_remap_page_range(vma->vm_start,map_offset,map_size,
diff -ur clean/2.3.25pre1/drivers/sgi/char/graphics.c 2.3.25pre1/drivers/sgi/char/graphics.c
--- clean/2.3.25pre1/drivers/sgi/char/graphics.c Tue Aug 31 14:23:03 1999
+++ 2.3.25pre1/drivers/sgi/char/graphics.c Fri Oct 29 13:47:35 1999
@@ -271,7 +271,7 @@
uint size;

size = vma->vm_end - vma->vm_start;
- if (vma->vm_offset & ~PAGE_MASK)
+ if (vma->vm_pgoff)
return -ENXIO;

/* 1. Set our special graphic virtualizer */
diff -ur clean/2.3.25pre1/drivers/sgi/char/shmiq.c 2.3.25pre1/drivers/sgi/char/shmiq.c
--- clean/2.3.25pre1/drivers/sgi/char/shmiq.c Mon Oct 11 13:13:25 1999
+++ 2.3.25pre1/drivers/sgi/char/shmiq.c Fri Oct 29 13:47:45 1999
@@ -318,7 +318,7 @@
if (minor-- == 0)
return -EINVAL;

- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;

size = vma->vm_end - vma->vm_start;
diff -ur clean/2.3.25pre1/drivers/sound/cmpci.c 2.3.25pre1/drivers/sound/cmpci.c
--- clean/2.3.25pre1/drivers/sound/cmpci.c Sat Oct 2 10:49:30 1999
+++ 2.3.25pre1/drivers/sound/cmpci.c Fri Oct 29 13:47:58 1999
@@ -1333,7 +1333,7 @@
db = &s->dma_adc;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
diff -ur clean/2.3.25pre1/drivers/sound/es1370.c 2.3.25pre1/drivers/sound/es1370.c
--- clean/2.3.25pre1/drivers/sound/es1370.c Fri Oct 29 13:09:36 1999
+++ 2.3.25pre1/drivers/sound/es1370.c Fri Oct 29 14:09:13 1999
@@ -1316,7 +1316,7 @@
db = &s->dma_adc;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
@@ -1840,7 +1840,7 @@
return -EINVAL;
if ((ret = prog_dmabuf_dac1(s)) != 0)
return ret;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << s->dma_dac1.buforder))
diff -ur clean/2.3.25pre1/drivers/sound/es1371.c 2.3.25pre1/drivers/sound/es1371.c
--- clean/2.3.25pre1/drivers/sound/es1371.c Fri Oct 29 13:09:36 1999
+++ 2.3.25pre1/drivers/sound/es1371.c Fri Oct 29 14:09:21 1999
@@ -1894,7 +1894,7 @@
db = &s->dma_adc;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
@@ -2415,7 +2415,7 @@
return -EINVAL;
if ((ret = prog_dmabuf_dac1(s)) != 0)
return ret;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << s->dma_dac1.buforder))
diff -ur clean/2.3.25pre1/drivers/sound/esssolo1.c 2.3.25pre1/drivers/sound/esssolo1.c
--- clean/2.3.25pre1/drivers/sound/esssolo1.c Fri Oct 29 13:09:36 1999
+++ 2.3.25pre1/drivers/sound/esssolo1.c Fri Oct 29 13:48:08 1999
@@ -1199,7 +1199,7 @@
db = &s->dma_adc;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
diff -ur clean/2.3.25pre1/drivers/sound/maestro.c 2.3.25pre1/drivers/sound/maestro.c
--- clean/2.3.25pre1/drivers/sound/maestro.c Wed Oct 27 02:26:59 1999
+++ 2.3.25pre1/drivers/sound/maestro.c Fri Oct 29 13:48:10 1999
@@ -2339,7 +2339,7 @@
db = &s->dma_adc;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
diff -ur clean/2.3.25pre1/drivers/sound/sonicvibes.c 2.3.25pre1/drivers/sound/sonicvibes.c
--- clean/2.3.25pre1/drivers/sound/sonicvibes.c Fri Oct 29 13:09:36 1999
+++ 2.3.25pre1/drivers/sound/sonicvibes.c Fri Oct 29 13:48:15 1999
@@ -1516,7 +1516,7 @@
db = &s->dma_adc;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
diff -ur clean/2.3.25pre1/drivers/usb/audio.c 2.3.25pre1/drivers/usb/audio.c
--- clean/2.3.25pre1/drivers/usb/audio.c Fri Oct 29 13:09:36 1999
+++ 2.3.25pre1/drivers/usb/audio.c Fri Oct 29 13:48:17 1999
@@ -2201,7 +2201,7 @@
db = &as->usbin.dma;
} else
return -EINVAL;
- if (vma->vm_offset != 0)
+ if (vma->vm_pgoff)
return -EINVAL;
return dmabuf_mmap(db, vma->vm_start, vma->vm_end - vma->vm_start, vma->vm_page_prot);
}
diff -ur clean/2.3.25pre1/drivers/video/atyfb.c 2.3.25pre1/drivers/video/atyfb.c
--- clean/2.3.25pre1/drivers/video/atyfb.c Wed Oct 27 02:26:59 1999
+++ 2.3.25pre1/drivers/video/atyfb.c Fri Oct 29 13:53:22 1999
@@ -3048,21 +3048,24 @@
struct fb_info_aty *fb = (struct fb_info_aty *)info;
unsigned int size, page, map_size = 0;
unsigned long map_offset = 0;
+ unsigned long off;
int i;

if (!fb->mmap_map)
return -ENXIO;

+ if (vma->vm_pgoff > (0x80000000 >> PAGE_SHIFT))
+ return -EINVAL;
+
+ off = vma->vm_pgoff << PAGE_SHIFT;
size = vma->vm_end - vma->vm_start;
- if (vma->vm_offset & ~PAGE_MASK)
- return -ENXIO;

/* To stop the swapper from even considering these pages. */
vma->vm_flags |= (VM_SHM | VM_LOCKED);

- if (((vma->vm_offset == 0) && (size == fb->total_vram)) ||
- ((vma->vm_offset == fb->total_vram) && (size == PAGE_SIZE)))
- vma->vm_offset += 0x8000000000000000UL;
+ if (((vma->vm_pgoff == 0) && (size == fb->total_vram)) ||
+ (((vma->vm_pgoff << PAGE_SHIFT) == fb->total_vram) && (size == PAGE_SIZE)))
+ vma->vm_pgoff += 0x8000000000000000UL;

#ifdef __sparc_v9__
/* Align it as much as desirable */
@@ -3070,9 +3073,9 @@
unsigned long j, align;
int max = -1;

- map_offset = vma->vm_offset+size;
+ map_offset = (vma->vm_pgoff << PAGE_SHIFT) + size;
for (i = 0; fb->mmap_map[i].size; i++) {
- if (fb->mmap_map[i].voff < vma->vm_offset)
+ if (fb->mmap_map[i].voff < off)
continue;
if (fb->mmap_map[i].voff >= map_offset)
break;
@@ -3092,7 +3095,7 @@
j = align;
align = j - ((vma->vm_start
+ fb->mmap_map[max].voff
- - vma->vm_offset) & (j - 1));
+ - off) & (j - 1));
if (align != j) {
struct vm_area_struct *vmm;

@@ -3115,7 +3118,7 @@
for (i = 0; fb->mmap_map[i].size; i++) {
unsigned long start = fb->mmap_map[i].voff;
unsigned long end = start + fb->mmap_map[i].size;
- unsigned long offset = vma->vm_offset + page;
+ unsigned long offset = off + page;

if (start > offset)
continue;
diff -ur clean/2.3.25pre1/drivers/video/fbmem.c 2.3.25pre1/drivers/video/fbmem.c
--- clean/2.3.25pre1/drivers/video/fbmem.c Fri Oct 29 13:09:36 1999
+++ 2.3.25pre1/drivers/video/fbmem.c Fri Oct 29 14:12:46 1999
@@ -483,9 +483,12 @@
struct fb_ops *fb = info->fbops;
struct fb_fix_screeninfo fix;
struct fb_var_screeninfo var;
- unsigned long start;
+ unsigned long start, off;
u32 len;

+ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
+ return -EINVAL;
+ off = vma->vm_pgoff << PAGE_SHIFT;
if (!fb)
return -ENODEV;
if (fb->fb_mmap)
@@ -504,10 +507,10 @@
start = fix.smem_start;
len = (start & ~PAGE_MASK)+fix.smem_len;
start &= PAGE_MASK;
- len = (len+~PAGE_MASK) & PAGE_MASK;
- if (vma->vm_offset >= len) {
+ len = (len+~PAGE_MASK) & PAGE_MASK; /* someone's on crack. */
+ if (off >= len) {
/* memory mapped io */
- vma->vm_offset -= len;
+ off -= len;
fb->fb_get_var(&var, PROC_CONSOLE(info), info);
if (var.accel_flags)
return -EINVAL;
@@ -516,11 +519,10 @@
start &= PAGE_MASK;
len = (len+~PAGE_MASK) & PAGE_MASK;
}
- if ((vma->vm_end - vma->vm_start + vma->vm_offset) > len)
+ if ((vma->vm_end - vma->vm_start + off) > len)
return -EINVAL;
- vma->vm_offset += start;
- if (vma->vm_offset & ~PAGE_MASK)
- return -ENXIO;
+ off += start;
+ vma->vm_pgoff = off >> PAGE_CACHE_SHIFT;
#if defined(__mc68000__)
if (CPU_IS_020_OR_030)
pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE030;
@@ -549,7 +551,7 @@
#else
#warning What do we have to do here??
#endif
- if (io_remap_page_range(vma->vm_start, vma->vm_offset,
+ if (io_remap_page_range(vma->vm_start, off,
vma->vm_end - vma->vm_start, vma->vm_page_prot))
return -EAGAIN;
return 0;
diff -ur clean/2.3.25pre1/drivers/video/igafb.c 2.3.25pre1/drivers/video/igafb.c
--- clean/2.3.25pre1/drivers/video/igafb.c Thu Aug 19 14:01:00 1999
+++ 2.3.25pre1/drivers/video/igafb.c Fri Oct 29 13:59:55 1999
@@ -261,8 +261,6 @@
return -ENXIO;

size = vma->vm_end - vma->vm_start;
- if (vma->vm_offset & ~PAGE_MASK)
- return -ENXIO;

/* To stop the swapper from even considering these pages. */
vma->vm_flags |= (VM_SHM | VM_LOCKED);
@@ -271,17 +269,17 @@
for (page = 0; page < size; ) {
map_size = 0;
for (i = 0; fb->mmap_map[i].size; i++) {
- unsigned long start = fb->mmap_map[i].voff;
- unsigned long end = start + fb->mmap_map[i].size;
- unsigned long offset = vma->vm_offset + page;
+ unsigned long start = (fb->mmap_map[i].voff) >> PAGE_SHIFT;
+ unsigned long end = start + (fb->mmap_map[i].size) >> PAGE_SHIFT;
+ unsigned long offset = vma->vm_pgoff + (page >> PAGE_SHIFT);

if (start > offset)
continue;
if (offset >= end)
continue;

- map_size = fb->mmap_map[i].size - (offset - start);
- map_offset = fb->mmap_map[i].poff + (offset - start);
+ map_size = fb->mmap_map[i].size - ((offset - start) << PAGE_SHIFT);
+ map_offset = fb->mmap_map[i].poff + ((offset - start) << PAGE_SHIFT);
break;
}
if (!map_size) {
diff -ur clean/2.3.25pre1/drivers/video/sbusfb.c 2.3.25pre1/drivers/video/sbusfb.c
--- clean/2.3.25pre1/drivers/video/sbusfb.c Mon Oct 11 13:26:52 1999
+++ 2.3.25pre1/drivers/video/sbusfb.c Fri Oct 29 14:05:06 1999
@@ -175,12 +175,15 @@
struct fb_info_sbusfb *fb = sbusfbinfo(info);
unsigned int size, page, r, map_size;
unsigned long map_offset = 0;
+ unsigned long off;
int i;

size = vma->vm_end - vma->vm_start;
- if (vma->vm_offset & ~PAGE_MASK)
- return -ENXIO;
-
+ if (vma->vm_pgoff >= (~0UL >> PAGE_SHIFT))
+ return -EINVAL;
+
+ off = vma->vm_pgoff << PAGE_SHIFT;
+
/* To stop the swapper from even considering these pages */
vma->vm_flags |= (VM_SHM| VM_LOCKED);

@@ -190,9 +193,9 @@
unsigned long j, alignment, s = 0;
int max = -1;

- map_offset = vma->vm_offset+size;
+ map_offset = (vma->vm_pgoff << PAGE_SHIFT) + size;
for (i = 0; fb->mmap_map[i].size; i++) {
- if (fb->mmap_map[i].voff < vma->vm_offset)
+ if (fb->mmap_map[i].voff < off)
continue;
if (fb->mmap_map[i].voff >= map_offset)
break;
@@ -210,7 +213,7 @@
break;
if (alignment > PAGE_SIZE) {
j = alignment;
- alignment = j - ((vma->vm_start + fb->mmap_map[max].voff - vma->vm_offset) & (j - 1));
+ alignment = j - ((vma->vm_start + fb->mmap_map[max].voff - off) & (j - 1));
if (alignment != j) {
struct vm_area_struct *vmm = find_vma(current->mm, vma->vm_start);
if (!vmm || vmm->vm_start >= vma->vm_end + alignment) {
@@ -227,7 +230,7 @@
for (page = 0; page < size; ){
map_size = 0;
for (i = 0; fb->mmap_map[i].size; i++)
- if (fb->mmap_map[i].voff == vma->vm_offset+page) {
+ if (fb->mmap_map[i].voff == off+page) {
map_size = sbusfb_mmapsize(fb,fb->mmap_map[i].size);
#ifdef __sparc_v9__
#define POFF_MASK (PAGE_MASK|0x1UL)
diff -ur clean/2.3.25pre1/drivers/video/sgivwfb.c 2.3.25pre1/drivers/video/sgivwfb.c
--- clean/2.3.25pre1/drivers/video/sgivwfb.c Thu Aug 19 14:01:00 1999
+++ 2.3.25pre1/drivers/video/sgivwfb.c Fri Oct 29 14:07:07 1999
@@ -907,9 +907,12 @@
struct vm_area_struct *vma)
{
unsigned long size = vma->vm_end - vma->vm_start;
- unsigned long offset = sgivwfb_mem_phys + vma->vm_offset;
- if (vma->vm_offset+size > sgivwfb_mem_size)
+ unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
+ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
+ return -EINVAL;
+ if (offset+size > sgivwfb_mem_size)
return -EINVAL;
+ offset += sgivwfb_mem_phys;
pgprot_val(vma->vm_page_prot) = pgprot_val(vma->vm_page_prot) | _PAGE_PCD;
vma->vm_flags |= VM_IO;
if (remap_page_range(vma->vm_start, offset, size, vma->vm_page_prot))
diff -ur clean/2.3.25pre1/fs/ncpfs/mmap.c 2.3.25pre1/fs/ncpfs/mmap.c
--- clean/2.3.25pre1/fs/ncpfs/mmap.c Fri Jul 2 18:15:51 1999
+++ 2.3.25pre1/fs/ncpfs/mmap.c Fri Oct 29 13:11:31 1999
@@ -46,7 +46,7 @@
if (!page)
return page;
address &= PAGE_MASK;
- pos = address - area->vm_start + area->vm_offset;
+ pos = address - area->vm_start + (area->vm_pgoff << PAGE_SHIFT);

count = PAGE_SIZE;
if (address + PAGE_SIZE > area->vm_end) {
diff -ur clean/2.3.25pre1/net/packet/af_packet.c 2.3.25pre1/net/packet/af_packet.c
--- clean/2.3.25pre1/net/packet/af_packet.c Tue Aug 31 14:23:03 1999
+++ 2.3.25pre1/net/packet/af_packet.c Fri Oct 29 14:07:14 1999
@@ -1698,7 +1698,7 @@
int err = -EINVAL;
int i;

- if (vma->vm_offset)
+ if (vma->vm_pgoff)
return -EINVAL;

size = vma->vm_end - vma->vm_start;


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:54    [W:0.050 / U:0.088 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site