On Wednesday 09 March 2005 16:17, Bob Bennett wrote: > Kristian SÃrensen <ks <at> cs.aau.dk> writes: > > Hi all! > > > > I have some trouble reading a 2346 byte /proc entry from our Umbrella > > kernel module. > > > > if (count != UMB_POLICY_SIZE) { > > printk("Umbrella: Error - /proc/umbrella is of invalid size\n"); > > return -EFAULT; > > > > if (copy_from_user(lbuf, buffer, count)) { > > kfree(lbuf); > > kfree(policy); > > return -EFAULT; > > } > > > > strcpy(policy, lbuf); > > umb_parse_proc(policy); > > > > } > > > > > > Now that everything works, I want to write a string of excactly 2346 > > characters to the /proc/umbrella file. However when I make the > > copy_from_user, I only get the first 1003 characters ( > > - Do you have a pointer to where I do this thing wrong? > > > > What is the limit regarding the size of writing a /proc entry? (we > > consider importing binary public keys to the kernel this way in the > > future). > > > > Best regards, > > Kristian. > > What makes you think you only have 1003 bytes? If UMB_POLICY_SIZE is > defined as 2346, then user space must have written that amount. Probably > the problem is that you used strcpy() to copy the data from lbuf to policy, > and there is a null character after 1003 bytes. It is an unnecessary extra > step to allocate two buffers (lbuf & policy) and copy data from one to the > other. Why not just pass lbuff to umb_parse_proc()?? You are right - that does not make sense having both the buffers :-)))
The input that I write to the /proc/umbrella file is stored in a file in usermode Linux... Can the '\0' be hidden somewhere in the text file - even though everything looks normal in the vi editor? Thanks for your answer! Cheers, Kristian. -- Kristian SÃrensen E-mail: [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/