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

From: Constantine Gavrilov
Date: Mon Sep 13 2004 - 11:10:57 EST


Arnd Bergmann wrote:

On Montag, 13. September 2004 16:04, Constantine Gavrilov wrote:


We have a piece of kernel code that calls some system calls in kernel context (from a process with mm and a daemonized kernel thread that does not have mm). This works fine on IA64 and i386 architectures.



You can find the list of system calls that are supposed to work
from kernel space in asm/unistd.h inside #ifdef __KERNEL__SYSCALLS__.
On current kernels, that list only contains execve(), which should
be avoided as well in favor of call_usermodehelper. Other calls
might work on some architectures but that is not a supported
interface any more.

You could call the sys_* functions directly if they are exported,
but it is unlikely that such code gets integrated in the mainline
kernel.

The real answer for your problem highly depends on which syscalls
you want to use.

Arnd <><


I can implement differently what I want, though it will be somewhat kludgy and kernel depenedent (depends on a version and distribution). I wanted to avoid that. Since what I write is really an application and not interface, it was very "native" to use application syscall approach.

My real problem is not how to implement it. I want to understand this specific x86_64 problem.

--
----------------------------------------
Constantine Gavrilov
Kernel Developer
Qlusters Software Ltd
1 Azrieli Center, Tel-Aviv
Phone: +972-3-6081977
Fax: +972-3-6081841
----------------------------------------


-
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/