UPSTREAM: Make sure nd->path.mnt and nd->path.dentry are always valid pointers
[ Upstream commit 7d01ef75 ] Initialize them in set_nameidata() and make sure that terminate_walk() clears them once the pointers become potentially invalid (i.e. we leave RCU mode or drop them in non-RCU one). Currently we have "path_init() always initializes them and nobody accesses them outside of path_init()/terminate_walk() segments", which is asking for trouble. With that change we would have nd->path.{mnt,dentry} 1) always valid - NULL or pointing to currently allocated objects. 2) non-NULL while we are successfully walking 3) NULL when we are not walking at all 4) contributing to refcounts whenever non-NULL outside of RCU mode. Fixes: 6c6ec2b0 ("fs: add support for LOOKUP_CACHED") Reported-by:<syzbot+c88a7030da47945a3cc3@syzkaller.appspotmail.com> Tested-by:
Christian Brauner <christian.brauner@ubuntu.com> Change-Id: I0532db6ea79fb760d50a88f75e2bb0691c24e93c Signed-off-by:
Al Viro <viro@zeniv.linux.org.uk> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit 0cf0ce8f) Bug: 268174392 Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
Loading
Please sign in to comment