Re: your mail

Linus Torvalds
2009-03-11T15:04:38Z

On Wed, 11 Mar 2009, Vitaly Mayatskikh wrote:
>
> (v)scnprintf says it should return 0 when size is 0, but doesn't do
> so. Also size_t is unsigned, it can't be less then 0. Fix the code and
> comments.

That is bogus.

The code really does (od "did"? Maybe you removed it) check for _smaller_
than 0:

int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
{
...
/* Reject out-of-range values early. Large positive sizes are
used for unknown buffer sizes. */
if (unlikely((int) size < 0)) {
/* There can be only one.. */
static char warn = 1;
WARN_ON(warn);
warn = 0;
return 0;
}
...

because under/overflows have happened.

The kernel is _not_ a regular libc. We have different rules.

Linus