|
@@ -1140,18 +1140,20 @@ static int wait_noreap_copyout(struct wait_opts *wo, struct task_struct *p,
|
|
|
|
|
|
put_task_struct(p);
|
|
|
infop = wo->wo_info;
|
|
|
- if (!retval)
|
|
|
- retval = put_user(SIGCHLD, &infop->si_signo);
|
|
|
- if (!retval)
|
|
|
- retval = put_user(0, &infop->si_errno);
|
|
|
- if (!retval)
|
|
|
- retval = put_user((short)why, &infop->si_code);
|
|
|
- if (!retval)
|
|
|
- retval = put_user(pid, &infop->si_pid);
|
|
|
- if (!retval)
|
|
|
- retval = put_user(uid, &infop->si_uid);
|
|
|
- if (!retval)
|
|
|
- retval = put_user(status, &infop->si_status);
|
|
|
+ if (infop) {
|
|
|
+ if (!retval)
|
|
|
+ retval = put_user(SIGCHLD, &infop->si_signo);
|
|
|
+ if (!retval)
|
|
|
+ retval = put_user(0, &infop->si_errno);
|
|
|
+ if (!retval)
|
|
|
+ retval = put_user((short)why, &infop->si_code);
|
|
|
+ if (!retval)
|
|
|
+ retval = put_user(pid, &infop->si_pid);
|
|
|
+ if (!retval)
|
|
|
+ retval = put_user(uid, &infop->si_uid);
|
|
|
+ if (!retval)
|
|
|
+ retval = put_user(status, &infop->si_status);
|
|
|
+ }
|
|
|
if (!retval)
|
|
|
retval = pid;
|
|
|
return retval;
|