diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
index 55ff62cdb430..75c53aedf2fa 100644
--- a/src/v4l2/v4l2_camera_proxy.cpp
+++ b/src/v4l2/v4l2_camera_proxy.cpp
@@ -782,6 +782,24 @@ int V4L2CameraProxy::ioctl(V4L2CameraFile *file, unsigned long request, void *ar
 {
 	MutexLocker locker(proxyMutex_);
 
+	/*
+	 * Applications may easily find themselves incorrectly sign-extending
+	 * ioctls on 64-bit systems which can cause hard to diagnose failures
+	 * with the v4l2-adatation layer. Identify this failure, and work
+	 * around it - but report the issue as it should be fixed in the
+	 * application.
+	 */
+	if (request & 0xffffffff00000000) {
+		static bool warnOnce = true;
+
+		if (warnOnce) {
+			LOG(V4L2Compat, Error) << "ioctl sign extension detected.";
+			LOG(V4L2Compat, Error) << "Please fix your application.";
+			warnOnce = false;
+		}
+		request &= 0xffffffff;
+	}
+
 	if (!arg && (_IOC_DIR(request) & _IOC_WRITE)) {
 		errno = EFAULT;
 		return -1;
