[CRIU] [PATCH] [RFC] ptrace: peek and send siginfo

Andrey Wagin avagin at gmail.com
Tue Nov 27 04:35:47 EST 2012


2012/11/27 Cyrill Gorcunov <gorcunov at openvz.org>:
> On Tue, Nov 27, 2012 at 01:41:40AM +0400, Andrey Vagin wrote:
>> This functionality is required for checkpointing and restoring
>> pending signals.
>>
>> This patch adds two ptrace commands:
>> * to get siginfo for any signal with a specified sequence number
>> * to add a siginfo to a process
>>
>> Could you comment this approach?
>
> A few comments on implementation, while the idea looks reasonable for me.
> (And don't forget to CC Oleg once you send it to LKML for review).
>
>> +#ifdef CONFIG_CHECKPOINT_RESTORE
>> +     case PTRACE_PEEK_SIGINFO:
>> +             ret = do_peek_siginfo(addr & 0xffff, &siginfo, child, addr >> 16);
>
> Shifts (as far as I remember) have undefined behaviour on sign propagation in C,
> so I guess you better use plain ((long)addr > 0) predicate here.

It's not bool, it's a number. I want to be able to get a first signal,
a second one and so.

>
>> +             if (!ret)
>> +                     ret = copy_siginfo_to_user(datavp, &siginfo);
>> +             break;
>> +
>> +     case PTRACE_SEND_SIGINFO:
>> +             if (copy_from_user(&siginfo, datavp, sizeof siginfo))
>> +                     ret = -EFAULT;
>> +             else
>> +                     ret = do_send_sig_info(siginfo.si_signo,
>> +                                             &siginfo, child, addr ? 1 : 0);
>> +             break;
>> +#endif
>> +
>> +int do_peek_siginfo(int sig, siginfo_t *info, struct task_struct *tsk, s16 nr)
>> +{
>
> bool group maybe?

It's not bool too...

>
>         Cyrill


More information about the CRIU mailing list