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

From: Brian Gerst
Date: Mon Sep 13 2004 - 12:30:12 EST


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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/