X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=lib%2Fkasprintf.c;h=7f6c506a494226479af1152f13f99f1870f554d1;hb=f334bcd94b7d3c0fbc34d518a86548f451ab5faf;hp=f194e6e593e19db22ad6b7e50aeee0e7c46eafa6;hpb=d267b8d6c65ed7636a412ca479b96df7c0f5b27b;p=cascardo%2Flinux.git diff --git a/lib/kasprintf.c b/lib/kasprintf.c index f194e6e593e1..7f6c506a4942 100644 --- a/lib/kasprintf.c +++ b/lib/kasprintf.c @@ -13,19 +13,21 @@ /* Simplified asprintf. */ char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap) { - unsigned int len; + unsigned int first, second; char *p; va_list aq; va_copy(aq, ap); - len = vsnprintf(NULL, 0, fmt, aq); + first = vsnprintf(NULL, 0, fmt, aq); va_end(aq); - p = kmalloc_track_caller(len+1, gfp); + p = kmalloc_track_caller(first+1, gfp); if (!p) return NULL; - vsnprintf(p, len+1, fmt, ap); + second = vsnprintf(p, first+1, fmt, ap); + WARN(first != second, "different return values (%u and %u) from vsnprintf(\"%s\", ...)", + first, second, fmt); return p; }