Skip to content
  • Paul Moore's avatar
    fs: create proper filename objects using getname_kernel() · 51689104
    Paul Moore authored
    There are several areas in the kernel that create temporary filename
    objects using the following pattern:
    
    	int func(const char *name)
    	{
    		struct filename *file = { .name = name };
    		...
    		return 0;
    	}
    
    ... which for the most part works okay, but it causes havoc within the
    audit subsystem as the filename object does not persist beyond the
    lifetime of the function.  This patch converts all of these temporary
    filename objects into proper filename objects using getname_kernel()
    and putname() which ensure that the filename object persists until the
    audit subsystem is finished with it.
    
    Also, a special thanks to Al Viro, Guenter Roeck, and Sabrina Dubroca
    for helping resolve a difficult kernel panic on boot related to a
    use-after-free problem in kern_path_create(); the thread can be seen
    at the link below:
    
     * https://lkml.org/lkml/2015/1/20/710
    
    
    
    This patch includes code that was either based on, or directly written
    by Al in the above thread.
    
    CC: viro@zeniv.linux.org.uk
    CC: linux@roeck-us.net
    CC: sd@queasysnail.net
    CC: linux-fsdevel@vger.kernel.org
    Signed-off-by: default avatarPaul Moore <pmoore@redhat.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    51689104