diff --git a/fs/open.c b/fs/open.c
index 76c56966e2974be4576b330c77c7ba5ad8ef6649..530da965e3697bba23da5d810ee42bdba587bfec 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -812,6 +812,8 @@ static int do_dentry_open(struct file *f,
 	return 0;
 
 cleanup_all:
+	if (WARN_ON_ONCE(error > 0))
+		error = -EINVAL;
 	fops_put(f->f_op);
 	if (f->f_mode & FMODE_WRITER) {
 		put_write_access(inode);