Re: [PATCH 2.6.21.1] i386: save registers before intra-privilege syscall

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



H. Peter Anvin wrote:
> Philipp Kohlbecher wrote:
>> From: Philipp Kohlbecher <pk031698@xxxxxxxxxxxxxxxxx>
>>
>> The kernel_execve function issues a software interrupt (int 0x80) to make
>> a system call to sys_execve. This function expects to find the stack segment
>> and stack pointer of the function that issued the system call in the pt_regs
>> struct. The syscall entry code that sets up this struct expects the stack
>> segment and the stack pointer of the issuing function already on the stack.
>> But the Intel processor saves these registers only if a stack-switch occurs,
>> i.e. for inter-privilege interrupts and exceptions (cf. Intel Software
>> Developer’s Manual, Vol. 3A, p. 5-17,
>> http://www.intel.com/design/processor/manuals/253668.pdf).
>> For an intra-privilege interrupt like the one issued in kernel_execve, these
>> registers must be saved manually.
>>
> 
> Could you describe the failure scenario this causes?

I don't know of any problems this causes. The kernel needs to be aware
of the fact that the xss and esp fields of the pt_regs struct may
contain wrong values anyway, as hardware interrupts arriving while the
CPU is in kernel mode would also lead to this condition.
The file include/asm-i386/processor.h contains a comment to that effect
(lines 483-492).
With kernel_execve we can predict this, however, and account for it.
(This may be superfluous, but I don't think it hurts and it might
prevent future errors.)

- Phil Kohlbecher
-
To unsubscribe from this list: send the line "unsubscribe linux-assembly" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies]     [Security]     [Linux C Programming]     [Linux for Hams]     [DCCP]     [Netfilter]     [Bugtraq]     [Photo]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux