[CRIU] Re: [PATCH cr 03/12] pipe: all pipes are seved in one file
Pavel Emelyanov
xemul at parallels.com
Thu Apr 5 08:11:08 EDT 2012
On 04/05/2012 04:03 PM, Andrew Vagin wrote:
> On Thu, Apr 05, 2012 at 03:57:10PM +0400, Pavel Emelyanov wrote:
>> On 04/05/2012 03:47 PM, Andrey Vagin wrote:
>>>
>>> Information about pipe's file structs saved in one global file and
>>> fdinfo_entry is saved for each descriptor
>>>
>>> Signed-off-by: Andrey Vagin <avagin at openvz.org>
>>> ---
>>> cr-dump.c | 203 ++++++++++++++++++++++++++---------------------------
>>> cr-show.c | 4 +-
>>> include/crtools.h | 4 +-
>>> include/image.h | 5 +-
>>> 4 files changed, 108 insertions(+), 108 deletions(-)
>>>
>>
>>> + if (!(p->flags & O_WRONLY) && i == nr_pipes) {
>>> + pipes[nr_pipes] = p->id;
>>> + nr_pipes++;
>>> + if (nr_pipes > PIPES_SIZE) {
>>> + pr_err("OOM storing pipe\n");
>>> + return -1;
>>> + }
>>> + } else
>>
>>> + pipes = xmalloc(PIPES_SIZE);
>>> + if (!pipes)
>>> + goto err;
>>>
>>
>> PIPES_SIZE is the number of bytes, but you check for overflow
>> by comparing number of items with it.
> Yes, it's my bug.
>>
>>> + for (i = 0; i < nr_pipes; i++)
>>> + if (pipes[i] == p->id)
>>> + break;
>>> +
>>> + if (!(p->flags & O_WRONLY) && i == nr_pipes) {
>>
>> O_o write ends of pipes do not happen to be in this array? What is it for?
> It's for dumping data.
Then write this find-n-deside code below the pipe_entry dumping code to
make it look thus.
>>> + pipes[nr_pipes] = p->id;
>>> + nr_pipes++;
>>> + if (nr_pipes > PIPES_SIZE) {
>>> + pr_err("OOM storing pipe\n");
>>> + return -1;
>>> + }
>>> + } else
>>> + goto dump;
>>
> .
>
More information about the CRIU
mailing list