From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D043BC433F5 for ; Mon, 31 Jan 2022 20:43:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4A7B96B0100; Mon, 31 Jan 2022 15:43:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 456FF6B0102; Mon, 31 Jan 2022 15:43:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 31F146B0103; Mon, 31 Jan 2022 15:43:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0027.hostedemail.com [216.40.44.27]) by kanga.kvack.org (Postfix) with ESMTP id 202416B0100 for ; Mon, 31 Jan 2022 15:43:05 -0500 (EST) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id D6566181F6E66 for ; Mon, 31 Jan 2022 20:43:04 +0000 (UTC) X-FDA: 79091756688.10.DCA7A9C Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf19.hostedemail.com (Postfix) with ESMTP id 110D51A0004 for ; Mon, 31 Jan 2022 20:43:03 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id C8A19CE127E; Mon, 31 Jan 2022 20:42:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3634C340E8; Mon, 31 Jan 2022 20:42:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1643661778; bh=RF9Uzy656eNPo86dgtYZteEf2qMfnRVGKDWgsayxNo0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=URvBe94F0JMMty2g/M6kg26bLOxEoYKeDYSuC7kvnkiHFQb0nt3o6aO+C2ToQJymO XAxwdDkfCU2XzYUPgUduz+X9dBk8UNmCBpnHrvCqeot0ipz4t58JkPVmJ3evjNkJqj EHbM/CFvqQWyvVCUN5Q/YmioMkX6yyhyMvzGzSMlwU845x3KlgzGC8sutoRk2tBrEO gkD/WBreqxVcZGhr7Nhh+wPPMnsZlCY5XfH36Udit6NpHz06ljNqa4PYJFbGz7ltzY Cynpz3oaSPQIWv4B+Rpwcewpp6Yq+lpRDN7Qgys6DG+rIgiN/GMANpUGuVAMT49dLM kW5RDxujS5QqQ== Date: Mon, 31 Jan 2022 22:42:43 +0200 From: Mike Rapoport To: Waiman Long Cc: Johannes Weiner , Michal Hocko , Vladimir Davydov , Andrew Morton , Petr Mladek , Steven Rostedt , Sergey Senozhatsky , Andy Shevchenko , Rasmus Villemoes , linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, Ira Weiny , David Rientjes , Roman Gushchin , Rafael Aquini Subject: Re: [PATCH v3 1/4] lib/vsprintf: Avoid redundant work with 0 size Message-ID: References: <20220131192308.608837-1-longman@redhat.com> <20220131192308.608837-2-longman@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220131192308.608837-2-longman@redhat.com> X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 110D51A0004 X-Stat-Signature: dbkcnz9rfdtc9otp3kzdqdqrxf5ap375 Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=URvBe94F; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf19.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org X-Rspam-User: nil X-HE-Tag: 1643661783-471229 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Jan 31, 2022 at 02:23:05PM -0500, Waiman Long wrote: > For *scnprintf(), vsnprintf() is always called even if the input size is > 0. That is a waste of time, so just return 0 in this case. > > Note that vsnprintf() will never return -1 to indicate an error. So > skipping the call to vsnprintf() when size is 0 will have no functional > impact at all. > > Signed-off-by: Waiman Long > Acked-by: David Rientjes > Reviewed-by: Sergey Senozhatsky > Acked-by: Roman Gushchin Acked-by: Mike Rapoport > --- > lib/vsprintf.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > index 3b8129dd374c..d419154b47bb 100644 > --- a/lib/vsprintf.c > +++ b/lib/vsprintf.c > @@ -2895,13 +2895,15 @@ int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) > { > int i; > > + if (unlikely(!size)) > + return 0; > + > i = vsnprintf(buf, size, fmt, args); > > if (likely(i < size)) > return i; > - if (size != 0) > - return size - 1; > - return 0; > + > + return size - 1; > } > EXPORT_SYMBOL(vscnprintf); > > -- > 2.27.0 > -- Sincerely yours, Mike.