You cannot do the string_length because you are trying to access a location that resides in the user space. When switching to kernel mode, the data segment register is changed to a location inside the kernel. But to allow for such operations the kernel maintains address of user's data segment in some other register (FS). To access any string or some indirection data, you have to actually copy that inside the kernel and then you can go on with the normal strcpy functions. There are few functions, I don't exactly recall their names but with names like copy_fs_to_kernel, copy_kernel_to_fs which allow you to copy between user and kernel spaces. Just look at the implementation of some system call where entire structures are passed (through a pointer to the structure) e.g. ioctl() and you may need to do something similar. Hope this helps, Sameer |