Problem with set_fs function in 2.4 linux kernel module

OP (Company: LanPro) #3739234
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.

Reply

Please log in before posting.

or

Log in with Google account

Registration is free and takes only a minute.

Register now