Re: [PATCH-next] modpost: Remove logically dead condition

From: Nicolas Schier
Date: Wed Nov 27 2024 - 15:52:56 EST


On Wed, Nov 27, 2024 at 09:59:04PM +0530 Advait Dhamorikar wrote:
> In case of failure vsnprintf returns `pos`, an unsigned long integer.
> An unsigned value can never be negative, so this test will always evaluate
> the same way.

'man vsnprintf' on my system reveals a different behaviour:

| The functions snprintf() and vsnprintf() do not
| write more than size bytes (including the termi‐
| nating null byte ('\0')). If the output was
| truncated due to this limit, then the return
| value is the number of characters (excluding the
| terminating null byte) which would have been
| written to the final string if enough space had
| been available. Thus, a return value of size or
| more means that the output was truncated. (See
| also below under NOTES.)
|
| If an output error is encountered, a negative
| value is returned.

vsnprintf prototypes also indicate 'int' as return type. What is the source of your mentioned findings?

Kind regards,
Nicolas