--- jfbterm-0.4.7/fbcommon.c.mmap 2006-07-27 17:19:12.000000000 +0900 +++ jfbterm-0.4.7/fbcommon.c 2006-07-27 20:32:21.000000000 +0900 @@ -564,21 +564,34 @@ p->moff = (u_long)(fb_fix.mmio_start) & (~PAGE_MASK); p->mlen = (fb_fix.mmio_len + p->moff + ~PAGE_MASK) & PAGE_MASK; + +#if 0 /* This code is dead... perhaps? */ p->mmio = (u_char*)mmap(NULL, p->mlen, PROT_READ|PROT_WRITE, MAP_SHARED, p->fh, p->slen); if ((long)p->mmio == -1) { + /* mmap with length 0 returns EINVAL on > linux 2.6.12 */ + if (!p->mlen){ + if (p->moff) { + print_message("possible memory corruption\n"); + abort(); + } + } else { #ifdef JFB_MMIO_CHECK die("cannot mmap(mmio)"); #else print_message("cannot mmap(mmio) : %s\n", strerror(errno)); #endif + } } p->mmio = p->mmio + p->moff; +#endif #ifdef DEBUG print_message("mmap ; %d - %p\n", p->slen, p->smem); +#if 0 print_message("mmio ; %d - %p\n", p->mlen, p->mmio); #endif +#endif /* move viewport to upper left corner */ if (fb_var.xoffset != 0 || fb_var.yoffset != 0) { @@ -610,9 +623,11 @@ if ((long)p->smem != -1) { munmap((caddr_t)((u_long)p->smem & PAGE_MASK), p->slen); } +#if 0 if ((long)p->mmio != -1) { munmap((caddr_t)((u_long)p->mmio & PAGE_MASK), p->mlen); } +#endif if (cmapSaved == TRUE) { tfbm_put_cmap(p->fh, &ocmap); cmapSaved = FALSE;