Hi James, > There's been no ack on this one. However, there's no actual reason to > prefer scnprintf over snprintf: the former will zero terminate, the > latter won't if the write length is over the buffer length, but this is > a file buffer: the routine will return as many bytes to userspace as are > specified in the count (including zeros if they're within the count), so > zero termination of a string in sysfs is unnecessary. There's a patch in Greg's driver tree for the next merge that changes the documentation about the usage of the s*printf() functions in sysfs show() methods from/to (in Documentation/filesystems/sysfs.txt): -- show() should always use 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(). It currently says you should use scnprintf() but will become more explicit about what you must not use and what you can or must use. That's probably the best reason I can offer about why to prefer one function over the other. This is my understanding of the difference between snprintf() and scnprintf() in terms of sysfs show() methods - there is a subtle difference between the two functions in the return value. The snprintf() function returns the number of bytes that it would have formatted given sufficient space. It doesn't matter what the size argument was. If the size passed in is 4096 and the number of bytes that it would have formatted is 4200 then 4200 will be what is returned from snprintf() even though it did not modify anything after byte 4096 in the buffer. The scnprintf() function returns the number of bytes it actually formatted (excluding the zero termination). Using the above data if 4096 was the size passed in then the return value will never be more than 4095. There is code in sysfs_kf_seq_show() to make sure that the count returned from the show() method is not >= PAGE_SIZE and reduce it to PAGE_SIZE-1 if it was. I don't think user space will ever get more than PAGE_SIZE-1 bytes regardless of which function is used. I don't mind if the patch isn't accepted but I thought I should at least explain my rationale behind the change. Thanks Shane ��.n��������+%������w��{.n�����{����*jg��������ݢj����G�������j:+v���w�m������w�������h�����٥