diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py
index 8d5963a1f0..c63cb7c84a 100644
--- a/lib/ansible/module_utils/basic.py
+++ b/lib/ansible/module_utils/basic.py
@@ -890,6 +890,10 @@ class AnsibleModule(object):
                                    msg="mode must be in octal or symbolic form",
                                    details=str(e))
 
+                if mode != stat.S_IMODE(mode):
+                    # prevent mode from having extra info orbeing invalid long number
+                    self.fail_json(path=path, msg="Invalid mode supplied", details=str(e))
+
         prev_mode = stat.S_IMODE(path_stat.st_mode)
 
         if prev_mode != mode: