Hi,
On Feb 27 2018 15:12, Jaejoong Kim wrote:
We can see below explanation in 'Documentation/filesystems /sysfs.txt'[1]:
- show() methods should return the number of bytes printed into the buffer. This is the return value of scnprintf(). - show() must not use snprintf() when formatting the value to be returned to user space. If you can guarantee that an overflow will never happen you can use sprintf() otherwise you must use scnprintf().
Actually, 'snprintf()' returns written bytes excluding trailing _null_ byte for end output to strings and we need to use 'scnprintf()'.
Strictly speaking, that is half the truth.
snprintf() does not return the length actually written to the buffer, but rather to return the length that it was intended to be written to. So, in case of the formated buffer size is much bigger, 'snprintf()' will return formated buffer size not written bytes.
Please refer to the LWN about snprintf https://lwn.net/Articles/69419/
I do NOT think the original codes will happen if snprintf() return a number larger than PAGE_SIZE. Nevertheless, it is better to use scnprintf () for the show method because of the snprintf () behavior.
Ah... Exactly. I failed to get your intention, sorry... (I should have read your commit comment carefully...)
Thanks
Takashi Sakamoto