Quoting Stéphane Graber ([email protected]):
> This adds a new %P variable to be used in core_pattern. This variable contains
> the global PID (PID in the init namespace) as %p contains the PID in the
> current namespace which isn't always what we want.
> 
> The main use for this is to make it easier to handle crashes that happened
> within a container. With that new variables it's possible to have the crashes
> dumped into the container or forwarded to the host with the right PID
> (from the host's point of view).
> 
> Reported-by: Hans Feldt <[email protected]>
> Cc: Alexander Viro <[email protected]>
> Cc: Eric W. Biederman <[email protected]>
> Cc: Serge Hallyn <[email protected]>

Thanks, Stéphane.

Acked-by: Serge E. Hallyn <[email protected]>

> Signed-off-by: Stéphane Graber <[email protected]>
> ---
>  Documentation/sysctl/kernel.txt | 1 +
>  fs/coredump.c                   | 5 +++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
> index ccd4258..833026d 100644
> --- a/Documentation/sysctl/kernel.txt
> +++ b/Documentation/sysctl/kernel.txt
> @@ -182,6 +182,7 @@ core_pattern is used to specify a core dumpfile pattern 
> name.
>       %<NUL>  '%' is dropped
>       %%      output one '%'
>       %p      pid
> +     %P      global pid (init PID namespace)
>       %u      uid
>       %g      gid
>       %d      dump mode, matches PR_SET_DUMPABLE and
> diff --git a/fs/coredump.c b/fs/coredump.c
> index c647965..528c6fc 100644
> --- a/fs/coredump.c
> +++ b/fs/coredump.c
> @@ -186,6 +186,11 @@ static int format_corename(struct core_name *cn, struct 
> coredump_params *cprm)
>                               err = cn_printf(cn, "%d",
>                                             task_tgid_vnr(current));
>                               break;
> +                     /* global pid */
> +                     case 'P':
> +                             err = cn_printf(cn, "%d",
> +                                           task_tgid_nr(current));
> +                             break;
>                       /* uid */
>                       case 'u':
>                               err = cn_printf(cn, "%d", cred->uid);
> -- 
> 1.8.1.2
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to