[parisc-linux] [RFC] pselect/ppoll support

Kyle McMartin kyle at mcmartin.ca
Sun Apr 9 20:16:15 MDT 2006


On Sun, Apr 09, 2006 at 10:06:03PM -0400, Carlos O'Donell wrote:
> > -       .export sys_rt_sigsuspend_wrapper
> > -sys_rt_sigsuspend_wrapper:
<snip>
> > -
> > -       bv      %r0(%r2)
> > -       nop
> > -
> 
> This needs more review.
>

As far as I could tell, this was just massaging to get the pt_regs
for sys_rt_sigsuspend, so if we use the generic one, it could go too.
 
> > -asmlinkage int
> > -sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, struct pt_regs *regs)
> 
> You've switched over to the kernel generic version of
> sys_rt_sigsuspend, and you will have to review if it does exactly what
> our version was doing. I suspect it's slightly different, and you
> problems start here.
> 

I did a quick comparison of the two, and it seemed to be mostly the
same. Someone who is more clued in should make sure I'm not on drugs
though.

<snip>
> I believe we've always had a race condition in this trampoline.
> I'm raising this issue so we can remember that it's there or
> completely squash the issue. While returning to userspace
> you *cannot* take another restart since the restarts are not
> nestable. You must disable restarts and then reenable them
> when you return from the trampoline. Linus wrote an email about
> this issue. Has this been fixed for us?
>

NFC.
 
> > +       if (!user_mode(regs))
> > +               return;
> 
> Don't delete the comment unless you are willing to replace it with
> one that explains why this might be the case. Please think about
> kernel mode threads and why we don't do this for them.
>

I'm just playing follow the leader through most of this routine.
 
> > -       while (1) {
> > -
> Have other arches changed their handlers?
> Are we no longer required to loop in an attempt to deliver the signal?
>

We loop in entry.S if we still have SIGPENDING set. AFAICT, this 
looping was redundant. Unless we can jump out of do_signal without
hitting intr_check_sig && syscall_check_sig, I'm not sure...

Cheers!
	Kyle 



More information about the parisc-linux mailing list