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

Author: Yuri Petrovsky (Company: LanPro) (yura_lvk)
Posted on:

Rate this post
0 useful
not useful

I'm writing kernel module for embedded system working on Linux kernel 
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.


Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.