]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ovl: relax WARN_ON in ovl_verify_area()
authorAmir Goldstein <amir73il@gmail.com>
Sun, 17 Mar 2024 11:59:43 +0000 (13:59 +0200)
committerAmir Goldstein <amir73il@gmail.com>
Sun, 17 Mar 2024 13:59:41 +0000 (15:59 +0200)
syzbot hit an assertion in copy up data loop which looks like it is
the result of a lower file whose size is being changed underneath
overlayfs.

This type of use case is documented to cause undefined behavior, so
returning EIO error for the copy up makes sense, but it should not be
causing a WARN_ON assertion.

Reported-and-tested-by: syzbot+3abd99031b42acf367ef@syzkaller.appspotmail.com
Fixes: ca7ab482401c ("ovl: add permission hooks outside of do_splice_direct()")
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
fs/overlayfs/copy_up.c

index 8586e2f5d24390c91263ea1ee48e7c3b22199cd2..0762575a1e7080b30ba29fbdf69958eff27aea42 100644 (file)
@@ -234,11 +234,11 @@ static int ovl_verify_area(loff_t pos, loff_t pos2, loff_t len, loff_t totlen)
 {
        loff_t tmp;
 
-       if (WARN_ON_ONCE(pos != pos2))
+       if (pos != pos2)
                return -EIO;
-       if (WARN_ON_ONCE(pos < 0 || len < 0 || totlen < 0))
+       if (pos < 0 || len < 0 || totlen < 0)
                return -EIO;
-       if (WARN_ON_ONCE(check_add_overflow(pos, len, &tmp)))
+       if (check_add_overflow(pos, len, &tmp))
                return -EIO;
        return 0;
 }