Index: kernel/generic/include/macros.h
===================================================================
--- kernel/generic/include/macros.h	(revision 466e95f7c1e1804072fe2965ba7a828e95259ed5)
+++ kernel/generic/include/macros.h	(revision 082b7f1c98926730d2a2ca8eced2348d2d692bc2)
@@ -52,8 +52,19 @@
     uint64_t sz2)
 {
-	uint64_t e1 = s1 + sz1;
-	uint64_t e2 = s2 + sz2;
-	
-	return ((s1 < e2) && (s2 < e1));
+	uint64_t e1 = s1 + sz1 - 1;
+	uint64_t e2 = s2 + sz2 - 1;
+
+	/* both sizes are non-zero */
+	if (sz1 && sz2)
+		return ((s1 <= e2) && (s2 <= e1));
+
+	/* one size is non-zero */
+	if (sz2)
+		return ((s1 >= s2) && (s1 <= e2));
+	if (sz1)
+		return ((s2 >= s1) && (s2 <= e1));
+
+	/* both are zero */
+	return (s1 == s2);
 }
 
