Index: kernel/generic/include/macros.h
===================================================================
--- kernel/generic/include/macros.h	(revision e6a6c02954a45ba875ec2de8c72742d0183240e7)
+++ kernel/generic/include/macros.h	(revision b6913b7a680d8a82aa53cc8eaf2b9a5df83eac1a)
@@ -69,7 +69,16 @@
     uint64_t sz2)
 {
-	uint64_t e1 = s1 + sz1;
-	uint64_t e2 = s2 + sz2;
-	
+	uint64_t e1;
+	uint64_t e2;
+
+	/* Handle the two corner cases when either sz1 or sz2 are zero. */
+	if (sz1 == 0)
+		return (s1 == s2) && (sz2 == 0);
+	e1 = s1 + sz1 - 1;	
+	if (sz2 == 0)
+		return (s1 <= s2) && (s2 <= e1);
+	e2 = s2 + sz2 - 1;
+
+	/* e1 and e2 are end addresses, the sum is imune to overflow */
 	return ((s1 <= s2) && (e1 >= e2));
 }
