Cleanup the code a bit.  test_rfind is failing on PPC and PPC64 buildbots,
this might fix the problem.
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index bc153c9..e808d87 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -253,8 +253,8 @@
 	   int reverse)
 {
 	Py_ssize_t start = self->pos;
-        Py_ssize_t end = self->size;
-	char *needle;
+	Py_ssize_t end = self->size;
+	const char *needle;
 	Py_ssize_t len;
 
 	CHECK_VALID(NULL);
@@ -262,7 +262,7 @@
 			      &needle, &len, &start, &end)) {
 		return NULL;
 	} else {
-		char *p;
+		const char *p, *start_p, *end_p;
 		char sign = reverse ? -1 : 1;
 
                 if (start < 0)
@@ -279,11 +279,11 @@
 		else if ((size_t)end > self->size)
 			end = self->size;
 
-		start += (Py_ssize_t)self->data;
-		end += (Py_ssize_t)self->data;
+		start_p = self->data + start;
+		end_p = self->data + end;
 
-		for (p = (char *)(reverse ? end - len : start);
-		     p >= (char *)start && p + len <= (char *)end; p+=sign) {
+		for (p = (reverse ? end_p - len : start_p);
+		     (p >= start_p) && (p + len <= end_p); p += sign) {
 			Py_ssize_t i;
 			for (i = 0; i < len && needle[i] == p[i]; ++i)
 				/* nothing */;