[CRIU] [PATCH 2/2] cr-check: add compat_restore check
Dmitry Safonov
dsafonov at virtuozzo.com
Tue Jan 10 05:06:25 PST 2017
On 01/10/2017 03:34 PM, Pavel Emelyanov wrote:
> On 01/09/2017 07:59 PM, Dmitry Safonov wrote:
>> Initialy, I thought to name it "compat_restore", but after I've dropped
>> the second 32-bit parasite (which surely made compat code lesser and
>> easier), our parasite works in 64-bit in 32-bit task and ptrace()
>> for setting registers in this long-jumped situation will work correctly
>> only after v4.9 kernel. Maybe it can be work-arounded if needed,
>> but yet no compatible dump for pre-v4.9 kernels.
>>
>> Requested-by: Andrei Vagin <avagin at virtuozzo.com>
>> Signed-off-by: Dmitry Safonov <dsafonov at virtuozzo.com>
>> ---
>> criu/cr-check.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/criu/cr-check.c b/criu/cr-check.c
>> index 60279e135dfa..94c5074557ce 100644
>> --- a/criu/cr-check.c
>> +++ b/criu/cr-check.c
>> @@ -48,6 +48,7 @@
>> #include "libnetlink.h"
>> #include "net.h"
>> #include "linux/userfaultfd.h"
>> +#include "restorer.h"
>>
>> static char *feature_name(int (*func)());
>>
>> @@ -1134,6 +1135,14 @@ static int check_loginuid(void)
>> return 0;
>> }
>>
>> +static int check_compat_cr(void)
>
> Call for this should also be added to cr_check()
Hmm, and what about tun/userns/loginuid features?
Should them be also in cr_check()?
I don't completely get the policy why some are(not) there.
>
>> +{
>> + if (kdat_compat_sigreturn_test())
>> + return 0;
>> + pr_err("compat_cr is not supported. Requires kernel >= v4.9\n");
>> + return -1;
>> +}
>> +
>> struct feature_list {
>> char *name;
>> int (*func)();
>> @@ -1154,6 +1163,7 @@ static struct feature_list feature_list[] = {
>> { "autofs", check_autofs },
>> { "tcp_half_closed", check_tcp_halt_closed },
>> { "lazy_pages", check_uffd },
>> + { "compat_cr", check_compat_cr },
>> { NULL, NULL },
>> };
>>
>>
>
--
Dmitry
More information about the CRIU
mailing list