diff --git a/include/asm-mips/compat.h b/include/asm-mips/compat.h
index 432653d7ae09326dafde8ef0b23504ca27b69300..67c3f8ec0303bba4e95fdf1eb00b9638d51d62ac 100644
--- a/include/asm-mips/compat.h
+++ b/include/asm-mips/compat.h
@@ -132,7 +132,8 @@ typedef u32		compat_uptr_t;
 
 static inline void __user *compat_ptr(compat_uptr_t uptr)
 {
-	return (void __user *)(long)uptr;
+	/* cast to a __user pointer via "unsigned long" makes sparse happy */
+	return (void __user *)(unsigned long)(long)uptr;
 }
 
 static inline compat_uptr_t ptr_to_compat(void __user *uptr)