I tried to implement the system call, the way you did. That is passing 2 strings s1, s2 and finding out their lengths. It did give me segmentation fault. I even tried to just print the strings within sys_print_data () using printk() as well as sys_write(), it did the same thing. The message it gave was that the kernel was unable to do paging at virtual address xxxxx.. I suppose there must be another way to pass strings to the system call, but I don't know at this point. If I do in the future, I will let you know.