Serge E. Hallyn wrote:
> Quoting Oren Laadan (or...@cs.columbia.edu):
>>
>> se...@us.ibm.com wrote:
>>> From: Serge E. Hallyn <se...@us.ibm.com>
>>>
>>> unsigned longs are not a good value to checkpoint between
>>> x86-32 and x86-64 32-bit tasks :)
>>>
>>> Signed-off-by: Serge E. Hallyn <se...@us.ibm.com>
>>> ---
>>>  checkpoint/checkpoint.c        |    5 +--
>>>  checkpoint/memory.c            |   53 
>>> +++++++++++++++++++++++++++++++++++++--
>>>  checkpoint/restart.c           |    6 ++--
>>>  include/linux/checkpoint_hdr.h |    2 +-
>>>  4 files changed, 56 insertions(+), 10 deletions(-)
>> [...]
>>
>> Sketch for a sanity check:
>>
>>> +static int ckpt_read_auxv(struct ckpt_ctx *ctx, struct mm_struct *mm)
>>> +{
>>> +   int i, ret;
>>> +   u64 *buf = kmalloc(CKPT_AT_SZ, GFP_KERNEL);
>>> +
>>> +   if (!buf)
>>> +           return -ENOMEM;
>>> +   ret = _ckpt_read_buffer(ctx, buf, CKPT_AT_SZ);
>>> +   if (ret < 0) {
>>> +           kfree(buf);
>>> +           return ret;
>>> +   }
>>> +
>>      ret = -E2BIG;
>>> +   for (i=0; i<AT_VECTOR_SIZE; i++)
>>> +           if (buf[i] > (u64) ULONG_MAX)
>>                      goto out;
>>
>>      ret = -EINVAL;
>>      for (i=0; i<AT_VECTOR_SIZE; i++)
>>              if (mm->saved_auxv[i] == AT_NULL)
>>                      ret = 0;
>>      if (ret < 0)
>>              goto out;
> 
> Yup, that would work.
> 
> Alternatively, do you think it would be safe to just
> always set the last entry to AT_NULL?

A bit hacky, but should work.
... so I'll do just that :)

Oren.

> 
>>> +
>>> +   for (i=0; i<AT_VECTOR_SIZE; i++)
>>> +           mm->saved_auxv[i] = buf[i];
>>> +
>>  out:
>>> +   kfree(buf);
>>> +   return 0;
>>             ret;
>>
>> [...]
>>
>> Oren.
> 
_______________________________________________
Containers mailing list
contain...@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
Devel@openvz.org
https://openvz.org/mailman/listinfo/devel

Reply via email to