sys_read buffer too large

anish singh anish198519851985 at gmail.com
Sat Jul 20 11:19:39 EDT 2013


On Sat, Jul 20, 2013 at 2:04 PM, Don Raikes <don.raikes at oracle.com> wrote:

> Hello all,****
>
> ** **
>
> I am very new to kernel programming. In fact, I have been working on it
> for a week now.****
>
> ** **
>
> I am taking a computer science class, and one of our assignments is to
> hook some of the system calls in a 2.6.28 kernel.****
>
> ** **
>
> I have the basic module created, and I am hooking into the sys_read
> function.  The assignment is to print to the log what is being read using
> sys_read.****
>
> ** **
>
> I have some checks in my function to limit my printing to only a certain
> file, so I don’t get the contents of every file being read on the system.*
> ***
>
> ** **
>
> OnceI know I have the right file, I decided to print the size of the
> buffer.****
>
> ** **
>
> The function signature is:****
>
> ** **
>
> Asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);
> ****
>
> ** **
>
> So I do:****
>
> ** **
>
> Printk(KERN_INFO “Read buffer is [%d] bytes.\n”,count);****
>
> ** **
>
> The particular file I am reading has 2 lines the first is 14 bytes long
> and the second is 30 bytes long.****
>
> ** **
>
> The output from my printk statements are 8192 and 4096 respectively.****
>
> Why is the count so large?
>
I think it is the size of one PAGE.I think reading from sys_read
is PAGE aligned.Just print the size of the page and i think it will
be 4K.

> ****
>
> ** **
>
> Also I do a strlen(buf) and print the value as well, and it is 29 and 16
> respectively.****
>
> ** **
>
> Next I did  copy_from_user(tbuf,buf,strlen(buf))****
>
> And tried to print the contents of the buffer but it came out garbage.****
>
> ** **
>
> Does anyone have any ideas how I can get this to work?****
>
> ** **
>
> BTW: the assignment is due on Sunday so any help would be aappreciated.***
> *
>
> ** **
>
> ** **
>
> ** **
>
> --
> Best Regards, Donald****
>
> [image: Oracle] <http://www.oracle.com/>
> Donald raikes | Accessibility Specialist/ QA Engineer
> Phone: +15202717608 | Mobile: +15202717608
> Oracle Quality Assurance
> | Tucson, Arizona ****
>
> [image: Green Oracle] <http://www.oracle.com/commitment>****
>
> Oracle is committed to developing practices and products that help protect
> the environment****
>
> ** **
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20130720/d3db021a/attachment-0001.html 


More information about the Kernelnewbies mailing list