On Tue, Jul 24, 2018 at 1:40 PM Eric W. Biederman <[email protected]> wrote:
>
> +       if (signal_pending(current)) {
> +               retval = restart_syscall();
> +               goto fork_out;
> +       }

Oh, the previous version had this too, but it wasn't as obvious
because it was just in a single line:

        return ERR_PTR(restart_syscall());

but it's just crazy.

It should just be

        retval = -ERESTARTNOINTR;
        if (signal_pending(current))
                goto fork_out;

because it's just silly and pointless to change the code to use
restart_syscall() here.

All restart_syscall() does is

        set_tsk_thread_flag(current, TIF_SIGPENDING);
        return -ERESTARTNOINTR;

and you just *checked* that TIF_SIGPENDING was already set. So the
above is completely pointless.

It is not clear why you made that change. The old code had the simpler
"just return -ERESTARTNOINTR" model.

Did the restart_syscall() thing come in by mistake from some previous
trials and it just hung around?

            Linus

Reply via email to