[CRIU] [PATCH] zdtm: check only existent capabilities
Pavel Emelyanov
xemul at parallels.com
Fri Dec 28 14:47:16 EST 2012
On 12/28/2012 03:32 PM, Andrey Vagin wrote:
> Kernel started with 3.8-rc1 are not report non-existent caps in
> /proc/pid/status, so crtools doesn't dump/restore such caps.
>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
Applied
> ---
> test/zdtm/live/static/caps00.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/test/zdtm/live/static/caps00.c b/test/zdtm/live/static/caps00.c
> index 54054b2..01cc1af 100644
> --- a/test/zdtm/live/static/caps00.c
> +++ b/test/zdtm/live/static/caps00.c
> @@ -27,15 +27,29 @@ struct cap_data {
> int capget(struct cap_hdr *hdrp, struct cap_data *datap);
> int capset(struct cap_hdr *hdrp, const struct cap_data *datap);
>
> +static int cap_last_cap = 63;
> +#define NORM_CAPS(v, cap) v[1].cap &= (1LL << (cap_last_cap + 1 - 32)) - 1;
> +
> int main(int argc, char **argv)
> {
> task_waiter_t t;
> int pid, result_pipe[2];
> char res = 'x';
> + FILE *f;
>
> test_init(argc, argv);
> task_waiter_init(&t);
>
> + f = fopen("/proc/sys/kernel/cap_last_cap", "r");
> + if (f) {
> + if (fscanf(f, "%d", &cap_last_cap) != 1) {
> + err("Unable to read cal_last_cap");
> + return 1;
> + }
> + fclose(f);
> + } else
> + test_msg("/proc/sys/kernel/cap_last_cap is not available\n");
> +
> if (pipe(result_pipe)) {
> err("Can't create pipe\n");
> return 1;
> @@ -68,6 +82,13 @@ int main(int argc, char **argv)
>
> capget(&hdr, data_2);
>
> + NORM_CAPS(data, eff);
> + NORM_CAPS(data, prm);
> + NORM_CAPS(data, inh);
> + NORM_CAPS(data_2, eff);
> + NORM_CAPS(data_2, prm);
> + NORM_CAPS(data_2, inh);
> +
> if (data[0].eff != data_2[0].eff) {
> res = '1';
> goto bad;
>
More information about the CRIU
mailing list