Re: Calling syscalls from x86-64 kernel results in a crash on Opteron machines

Brian Gerst
2004-09-13T17:23:52Z

Constantine Gavrilov wrote:

> Christoph Hellwig wrote:
>
>> On Mon, Sep 13, 2004 at 05:04:17PM +0300, Constantine Gavrilov wrote:
>>
>>
>>> Hello:
>>>
>>> We have a piece of kernel code that calls some system calls in kernel
>>> context (
>>>
>>
>>
>> Which you shouldn't do in the first place.
>>
>>
>
> Function kernel_thread() on i386 is implemented by putting the args to
> appropriate regs and calling int 0x80, resulting in a system call
> clone() on i386.

It's gone in 2.6, in favor of calling do_fork() directly.

> I have also found the "syscall" instruction in x86-64 kernel specific
> code (it does not call _syscall() macros directly, though). So,
> "shouldn't do" is a bit too strong.
>
> What I am writing is an application, and not interface. As such, it is
> not much different from its requierements from a user-space application.
> If user-space application may call system calls, why a kernel space
> application cannot?
>
> And BTW, kernel-space applications have their own place even if the
> concept seems foreign to you.

What are you trying to do that can't be done in user space? The only
possible reason for a kernel space app is for performance (like knfsd),
at the cost of risking system stability and security.

--
Brian Gerst