mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-01 14:55:39 +00:00
signals: Move nr variable into peeking loop
And sanitize its usage a little bit. Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
14
cr-dump.c
14
cr-dump.c
@@ -1161,7 +1161,7 @@ static int dump_signal_queue(pid_t tid, SignalQueueEntry **sqe, bool group)
|
|||||||
{
|
{
|
||||||
struct ptrace_peeksiginfo_args arg;
|
struct ptrace_peeksiginfo_args arg;
|
||||||
siginfo_t siginfo[32]; /* One page or all non-rt signals */
|
siginfo_t siginfo[32]; /* One page or all non-rt signals */
|
||||||
int ret, j, nr;
|
int ret, j;
|
||||||
SignalQueueEntry *queue = NULL;
|
SignalQueueEntry *queue = NULL;
|
||||||
|
|
||||||
pr_debug("Dump %s signals of %d\n", group ? "shared" : "private", tid);
|
pr_debug("Dump %s signals of %d\n", group ? "shared" : "private", tid);
|
||||||
@@ -1179,7 +1179,12 @@ static int dump_signal_queue(pid_t tid, SignalQueueEntry **sqe, bool group)
|
|||||||
signal_queue_entry__init(queue);
|
signal_queue_entry__init(queue);
|
||||||
|
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
ret = ptrace(PTRACE_PEEKSIGINFO, tid, &arg, siginfo);
|
int nr;
|
||||||
|
|
||||||
|
nr = ret = ptrace(PTRACE_PEEKSIGINFO, tid, &arg, siginfo);
|
||||||
|
if (ret == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
if (errno == EIO) {
|
if (errno == EIO) {
|
||||||
pr_warn("ptrace doesn't support PTRACE_PEEKSIGINFO\n");
|
pr_warn("ptrace doesn't support PTRACE_PEEKSIGINFO\n");
|
||||||
@@ -1189,11 +1194,6 @@ static int dump_signal_queue(pid_t tid, SignalQueueEntry **sqe, bool group)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
nr = ret;
|
|
||||||
|
|
||||||
queue->n_signals += nr;
|
queue->n_signals += nr;
|
||||||
queue->signals = xrealloc(queue->signals, sizeof(*queue->signals) * queue->n_signals);
|
queue->signals = xrealloc(queue->signals, sizeof(*queue->signals) * queue->n_signals);
|
||||||
if (!queue->signals) {
|
if (!queue->signals) {
|
||||||
|
Reference in New Issue
Block a user