@ -10,6 +10,8 @@
# include <linux/export.h>
# include <linux/ctype.h>
# include <linux/errno.h>
# include <linux/fs.h>
# include <linux/limits.h>
# include <linux/mm.h>
# include <linux/slab.h>
# include <linux/string.h>
@ -596,3 +598,31 @@ char *kstrdup_quotable_cmdline(struct task_struct *task, gfp_t gfp)
return quoted ;
}
EXPORT_SYMBOL_GPL ( kstrdup_quotable_cmdline ) ;
/*
* Returns allocated NULL - terminated string containing pathname ,
* with special characters escaped , able to be safely logged . If
* there is an error , the leading character will be " < " .
*/
char * kstrdup_quotable_file ( struct file * file , gfp_t gfp )
{
char * temp , * pathname ;
if ( ! file )
return kstrdup ( " <unknown> " , gfp ) ;
/* We add 11 spaces for ' (deleted)' to be appended */
temp = kmalloc ( PATH_MAX + 11 , GFP_TEMPORARY ) ;
if ( ! temp )
return kstrdup ( " <no_memory> " , gfp ) ;
pathname = file_path ( file , temp , PATH_MAX + 11 ) ;
if ( IS_ERR ( pathname ) )
pathname = kstrdup ( " <too_long> " , gfp ) ;
else
pathname = kstrdup_quotable ( pathname , gfp ) ;
kfree ( temp ) ;
return pathname ;
}
EXPORT_SYMBOL_GPL ( kstrdup_quotable_file ) ;