EmbDev.net

Forum: ARM programming with GCC/GNU tools Problem with set_fs function in 2.4 linux kernel module


von Yuri P. (Company: LanPro) (yura_lvk)


Rate this post
useful
not useful
Hello!

I'm writing kernel module for embedded system working on Linux kernel 
2.4.xx.
CPU on the device is ARM926ejs. Communication with device - serial port 
(COM). Here is a code fragment:

if( sock->ops && sock->ops->ioctl ) {
   old_fs = get_fs();
   printk( KERN_ALERT "aaa\n" );
   set_fs( KERNEL_DS );
   printk( KERN_ALERT "bbb\n" );
   retval = sock->ops->ioctl( ... );
   set_fs( old_fs );
   ...
}

Module loads perfectly and works until the function "set_fs(KERNEL_DS)" 
is called. In HyperTerminal i see message "aaa", but cannot see "bbb". 
The behavior of device is strange: no kernel_panic, no error messages, 
nothing, it "dies" silently and absolutely till power switching. I 
suppose that the problem dialed with domain switching but cannot see 
where is error. I tried to write local_irq_disable()/local_irq_enable() 
around set_fs() - no effect. Does anybody know how to fix problem?
P.S. On x86 processors module works.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.