ovl: fix warning in ovl_create_real()
authorMiklos Szeredi <mszeredi@redhat.com>
Thu, 4 Nov 2021 09:55:34 +0000 (10:55 +0100)
committerMiklos Szeredi <mszeredi@redhat.com>
Thu, 4 Nov 2021 09:55:34 +0000 (10:55 +0100)
commit1f5573cfe7a7056e80a92c7a037a3e69f3a13d1c
tree529a98c4445e34dc1f806c760b2668f0b46ec27c
parent9a254403760041528bc8f69fe2f5e1ef86950991
ovl: fix warning in ovl_create_real()

Syzbot triggered the following warning in ovl_workdir_create() ->
ovl_create_real():

if (!err && WARN_ON(!newdentry->d_inode)) {

The reason is that the cgroup2 filesystem returns from mkdir without
instantiating the new dentry.

Weird filesystems such as this will be rejected by overlayfs at a later
stage during setup, but to prevent such a warning, call ovl_mkdir_real()
directly from ovl_workdir_create() and reject this case early.

Reported-and-tested-by: syzbot+75eab84fd0af9e8bf66b@syzkaller.appspotmail.com
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/dir.c
fs/overlayfs/overlayfs.h
fs/overlayfs/super.c