Hi Dwi, I couldn't really figure out what is being done in the code. But I think I noticed a reason why the call might fail (though not 100% sure). You allocated one byte with kmalloc, which is sizeof(char), but you would be copying 4 bytes into the area, that is sizeof(tmp). I think that's why you got a seg fault. Do you think so?
Regards, Danke On Jul 18, 7:39 pm, Dwi Sasongko Supriyadi <[email protected]> wrote: > Hello, > > I tried to pass "string" parameter from user to kernel and the driver > never get the parameter correctly. > > I have read following link as a reference: > > http://tldp.org/LDP/lkmpg/2.6/html/x892.html > > Then I modify get_user() with copy_from_user() as follow: > > char *tmp = kmalloc(sizeof(char), GFP_KERNEL); > > if (copy_from_user(tmp, (unsigned long *) param), sizeof (tmp)) { > return -EFAULT; > > } > > It always failed to copy user data. Did I miss anything? > > In addition, I also tried it on embedded system to pass int and struct > data types with success but passing string always failed (I use 2.6.28 > kernel on MIPS 4KSd family). What is the constraint on passing > parameter from user to kernel especially for "string" data type? Is it > a must to pass it via write() file operations? > > I appreciate any comments or suggestions, Thanks in advance. > > Regards, > DWI > -- > "A mathematician is a device for turning coffee into theorems." - Paul Erdos > > Contacts: > +62 857 8038 8298 > +62 813 9876 6576 > > Skype: dwi.sasongko > GTalk: ruckuus -- unsubscribe: [email protected] website: http://groups.google.com/group/android-kernel
