Hi Oleg,
On Mon, 11 Jul 2005, Oleg Nesterov wrote:
> > The change is so that we can send IRQs higher than 256 to do_IRQ. That
> > looks like it tries to check if we came in via system_call since we'd save
> > the system call number as orig_eax. Now that i think about it, doesn't
> > that path always get taken when we interrupt userspace and have pending
> > signals on return from interrupt?
>
> As far as I can see, we always have orig_eax < 0 on interrupt, because
>
> irq_entries_start:
> pushl $vector-256 <----- orig_eax
> jmp common_interrupt
>
> and NR_IRQS < 256. So if we have pending signals on return from interrupt,
> do_signal() will not corrupt userspace registers when regs->eax == -ERESTART...
> accidentally.
>
> Probably it makes sense to change it to
> pushl $vector - 0xFFFF - 1
>
> and in do_IRQ()
> int irq = regs->orig_eax & 0xFFFF
>
> if you need to send IRQs higher than 256 to do_IRQ.
Good catch, thanks i'll change that!
Zwane
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|