Blob Blame History Raw
--- 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;