Lines Matching refs:cn
62 static int expand_corename(struct core_name *cn, int size) in expand_corename() argument
64 char *corename = krealloc(cn->corename, size, GFP_KERNEL); in expand_corename()
72 cn->size = ksize(corename); in expand_corename()
73 cn->corename = corename; in expand_corename()
77 static int cn_vprintf(struct core_name *cn, const char *fmt, va_list arg) in cn_vprintf() argument
83 free = cn->size - cn->used; in cn_vprintf()
86 need = vsnprintf(cn->corename + cn->used, free, fmt, arg_copy); in cn_vprintf()
90 cn->used += need; in cn_vprintf()
94 if (!expand_corename(cn, cn->size + need - free + 1)) in cn_vprintf()
100 static int cn_printf(struct core_name *cn, const char *fmt, ...) in cn_printf() argument
106 ret = cn_vprintf(cn, fmt, arg); in cn_printf()
112 static int cn_esc_printf(struct core_name *cn, const char *fmt, ...) in cn_esc_printf() argument
114 int cur = cn->used; in cn_esc_printf()
119 ret = cn_vprintf(cn, fmt, arg); in cn_esc_printf()
122 for (; cur < cn->used; ++cur) { in cn_esc_printf()
123 if (cn->corename[cur] == '/') in cn_esc_printf()
124 cn->corename[cur] = '!'; in cn_esc_printf()
129 static int cn_print_exe_file(struct core_name *cn) in cn_print_exe_file() argument
137 return cn_esc_printf(cn, "%s (path unknown)", current->comm); in cn_print_exe_file()
151 ret = cn_esc_printf(cn, "%s", path); in cn_print_exe_file()
164 static int format_corename(struct core_name *cn, struct coredump_params *cprm) in format_corename() argument
172 cn->used = 0; in format_corename()
173 cn->corename = NULL; in format_corename()
174 if (expand_corename(cn, core_name_size)) in format_corename()
176 cn->corename[0] = '\0'; in format_corename()
185 err = cn_printf(cn, "%c", *pat_ptr++); in format_corename()
193 err = cn_printf(cn, "%c", '%'); in format_corename()
198 err = cn_printf(cn, "%d", in format_corename()
203 err = cn_printf(cn, "%d", in format_corename()
207 err = cn_printf(cn, "%d", in format_corename()
211 err = cn_printf(cn, "%d", in format_corename()
216 err = cn_printf(cn, "%d", cred->uid); in format_corename()
220 err = cn_printf(cn, "%d", cred->gid); in format_corename()
223 err = cn_printf(cn, "%d", in format_corename()
228 err = cn_printf(cn, "%ld", cprm->siginfo->si_signo); in format_corename()
235 err = cn_printf(cn, "%lld", time); in format_corename()
241 err = cn_esc_printf(cn, "%s", in format_corename()
247 err = cn_esc_printf(cn, "%s", current->comm); in format_corename()
250 err = cn_print_exe_file(cn); in format_corename()
254 err = cn_printf(cn, "%lu", in format_corename()
274 err = cn_printf(cn, ".%d", task_tgid_vnr(current)); in format_corename()
508 struct core_name cn; in do_coredump() local
561 ispipe = format_corename(&cn, &cprm); in do_coredump()
606 helper_argv = argv_split(GFP_KERNEL, cn.corename, NULL); in do_coredump()
624 cn.corename); in do_coredump()
635 if (need_suid_safe && cn.corename[0] != '/') { in do_coredump()
657 (void) sys_unlink((const char __user *)cn.corename); in do_coredump()
685 cn.corename, open_flags, 0600); in do_coredump()
688 cprm.file = filp_open(cn.corename, open_flags, 0600); in do_coredump()
740 kfree(cn.corename); in do_coredump()