Hi all! I have some trouble reading a 2346 byte /proc entry from our Umbrella kernel module.
Proc file is created write-only and I am able to write text to the file, and read it from kernel space. The function reading the entry is in short this: static int umb_proc_write(struct file *file, const char *buffer, unsigned long count, void *data) { char *policy; int *lbuf; int i; if (count != UMB_POLICY_SIZE) { printk("Umbrella: Error - /proc/umbrella is of invalid size\n"); return -EFAULT; } /* Initialization of lbuf */ policy = kmalloc(sizeof(char)*UMB_POLICY_SIZE, GFP_ATOMIC); lbuf = kmalloc(count, GFP_KERNEL); if (!lbuf || !policy) { kfree(lbuf); kfree(policy); return -EFAULT; } if (copy_from_user(lbuf, buffer, count)) { kfree(lbuf); kfree(policy); return -EFAULT; } strcpy(policy, lbuf); umb_parse_proc(policy); } If I read byte by byte will only give the characters on every fourth index. E.g. reading lbuf with the string "abcd", then lbuf[0]==a and lbuf[1]==d ... - Do anyone have an explanation for this behaviour? Making the strcpy does fix the problem - and the complete string is available! :-/ ... 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. -- Kristian Sørensen - The Umbrella Project -- Security for Consumer Electronics http://umbrella.sourceforge.net E-mail: [EMAIL PROTECTED], Phone: +45 29723816 - 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/