[parisc-linux] Re: [PATCH] Compat signal fixes for 64-bit parisc.

Carlos O'Donell carlos at systemhalted.org
Mon Feb 12 19:39:16 MST 2007


On 2/12/07, Kyle McMartin <kyle at mcmartin.ca> wrote:
> On Mon, Feb 12, 2007 at 09:14:28PM -0500, Carlos O'Donell wrote:
> > @@ -505,17 +505,15 @@ asmlinkage long compat_sys_rt_sigqueuein
> >       struct compat_siginfo __user *uinfo)
> > {
> >       siginfo_t info;
> > +     int ret;
> > +     mm_segment_t old_fs = get_fs();
> >
> >       if (copy_siginfo_from_user32(&info, uinfo))
> >               return -EFAULT;
> >
> > -     /* Not even root can pretend to send signals from the kernel.
> > -        Nor can they impersonate a kill(), which adds source info.  */
> > -     if (info.si_code >= 0)
> > -             return -EPERM;
> > -     info.si_signo = sig;
> > -
> > -     /* POSIX.1b doesn't mention process groups.  */
> > -     return kill_proc_info(sig, &info, pid);
> > +     set_fs (KERNEL_DS);
> > +     ret = sys_rt_sigqueueinfo(pid, sig, &info);
> > +     set_fs (old_fs);
> > +     return ret;
> > }
> >
>
> Why? We replicate the code in sys_rt_sigqueueinfo here to avoid the nasty
> set_fs/get_fs hacks. See my compat_sys_sysinfo changes for reference.

Excellent review. I'll drop this part of the patch and look at the
compat_sys_sysinfo changes. I saw some crazy stuff involving
"compat_alloc_userspace" which looks a little crazy (not to mention it
can't be called recursively).

c.



More information about the parisc-linux mailing list