All of lore.kernel.org
 help / color / mirror / Atom feed
From: Waiman Long <longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	Michal Hocko <mhocko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Vladimir Davydov
	<vdavydov.dev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	Petr Mladek <pmladek-IBi9RG/b67k@public.gmane.org>,
	Steven Rostedt <rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org>,
	Sergey Senozhatsky
	<senozhatsky-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	Andy Shevchenko
	<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Rasmus Villemoes
	<linux-qQsb+v5E8BnlAoU/VqSP6n9LOBIZ5rWg@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Mike Rapoport <rppt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	David Rientjes <rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Roman Gushchin <guro-b10kYP2dOMg@public.gmane.org>,
	Rafael Aquini <aquini-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Waiman Long <longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH v3 1/4] lib/vsprintf: Avoid redundant work with 0 size
Date: Mon, 31 Jan 2022 14:23:05 -0500	[thread overview]
Message-ID: <20220131192308.608837-2-longman@redhat.com> (raw)
In-Reply-To: <20220131192308.608837-1-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

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 <longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Acked-by: David Rientjes <rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Reviewed-by: Sergey Senozhatsky <senozhatsky-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Acked-by: Roman Gushchin <guro-b10kYP2dOMg@public.gmane.org>
---
 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


WARNING: multiple messages have this Message-ID (diff)
From: Waiman Long <longman@redhat.com>
To: Johannes Weiner <hannes@cmpxchg.org>,
	Michal Hocko <mhocko@kernel.org>,
	Vladimir Davydov <vdavydov.dev@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Petr Mladek <pmladek@suse.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
	linux-mm@kvack.org, Ira Weiny <ira.weiny@intel.com>,
	Mike Rapoport <rppt@kernel.org>,
	David Rientjes <rientjes@google.com>,
	Roman Gushchin <guro@fb.com>, Rafael Aquini <aquini@redhat.com>,
	Waiman Long <longman@redhat.com>
Subject: [PATCH v3 1/4] lib/vsprintf: Avoid redundant work with 0 size
Date: Mon, 31 Jan 2022 14:23:05 -0500	[thread overview]
Message-ID: <20220131192308.608837-2-longman@redhat.com> (raw)
In-Reply-To: <20220131192308.608837-1-longman@redhat.com>

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 <longman@redhat.com>
Acked-by: David Rientjes <rientjes@google.com>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Acked-by: Roman Gushchin <guro@fb.com>
---
 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



  parent reply	other threads:[~2022-01-31 19:23 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-31 19:23 [PATCH v3 0/4] mm/page_owner: Extend page_owner to show memcg information Waiman Long
2022-01-31 19:23 ` Waiman Long
     [not found] ` <20220131192308.608837-1-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-01-31 19:23   ` Waiman Long [this message]
2022-01-31 19:23     ` [PATCH v3 1/4] lib/vsprintf: Avoid redundant work with 0 size Waiman Long
     [not found]     ` <20220131192308.608837-2-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-01-31 20:42       ` Mike Rapoport
2022-01-31 20:42         ` Mike Rapoport
2022-01-31 19:23   ` [PATCH v3 2/4] mm/page_owner: Use scnprintf() to avoid excessive buffer overrun check Waiman Long
2022-01-31 19:23     ` Waiman Long
     [not found]     ` <20220131192308.608837-3-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-01-31 20:38       ` Roman Gushchin
2022-01-31 20:38         ` Roman Gushchin
2022-01-31 20:43       ` Mike Rapoport
2022-01-31 20:43         ` Mike Rapoport
2022-01-31 19:23   ` [PATCH v3 3/4] mm/page_owner: Print memcg information Waiman Long
2022-01-31 19:23     ` Waiman Long
     [not found]     ` <20220131192308.608837-4-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-01-31 20:51       ` Mike Rapoport
2022-01-31 20:51         ` Mike Rapoport
     [not found]         ` <YfhLzI+RLRGgexmr-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2022-01-31 21:43           ` Waiman Long
2022-01-31 21:43             ` Waiman Long
     [not found]             ` <4234fc60-5d65-1089-555a-734218aa6f9c-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-02-01  6:23               ` Mike Rapoport
2022-02-01  6:23                 ` Mike Rapoport
2022-01-31 20:51       ` Roman Gushchin
2022-01-31 20:51         ` Roman Gushchin
2022-02-01 10:54     ` Michal Hocko
     [not found]       ` <YfkRS75D3xcqLT85-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2022-02-01 17:04         ` Waiman Long
2022-02-01 17:04           ` Waiman Long
     [not found]           ` <33be132c-874d-1061-9003-50942275b221-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-02-02  8:49             ` Michal Hocko
2022-02-02  8:49               ` Michal Hocko
     [not found]               ` <YfpFkVLBb0GsDFsi-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2022-02-02 16:12                 ` Waiman Long
2022-02-02 16:12                   ` Waiman Long
2022-01-31 19:23   ` [PATCH v3 4/4] mm/page_owner: Record task command name Waiman Long
2022-01-31 19:23     ` Waiman Long
2022-01-31 22:03     ` [PATCH v4 " Waiman Long
     [not found]       ` <20220131220328.622162-1-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-02-01 15:28         ` Michal Hocko
2022-02-01 15:28           ` Michal Hocko
     [not found]           ` <YflRjeoC0jbzArDG-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2022-02-02 16:53             ` Waiman Long
2022-02-02 16:53               ` Waiman Long
     [not found]               ` <4ba66abe-5c6d-26a7-f11c-c3b8514bfb34-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-02-03 12:10                 ` Vlastimil Babka
2022-02-03 12:10                   ` Vlastimil Babka
2022-02-03 18:53                   ` Waiman Long
2022-02-02 20:30     ` [PATCH v4 0/4] mm/page_owner: Extend page_owner to show memcg information Waiman Long
2022-02-02 23:06       ` Rafael Aquini
2022-02-02 20:30     ` [PATCH v4 2/4] mm/page_owner: Use scnprintf() to avoid excessive buffer overrun check Waiman Long
     [not found]       ` <20220202203036.744010-3-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-02-03 15:46         ` Vlastimil Babka
2022-02-03 15:46           ` Vlastimil Babka
     [not found]           ` <5c03fa31-35a5-4cbc-6b0e-872d5db82a41-AlSwsSmVLrQ@public.gmane.org>
2022-02-03 18:49             ` Waiman Long
2022-02-03 18:49               ` Waiman Long
2022-02-08 10:51               ` Petr Mladek
     [not found]     ` <20220131192308.608837-5-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-01-31 20:54       ` [PATCH v3 4/4] mm/page_owner: Record task command name Roman Gushchin
2022-01-31 20:54         ` Roman Gushchin
     [not found]         ` <YfhMd5LTzTHu9zMD-cx5fftMpWqeCjSd+JxjunQ2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2022-01-31 21:46           ` Waiman Long
2022-01-31 21:46             ` Waiman Long
2022-02-02 20:30       ` [PATCH v4 1/4] lib/vsprintf: Avoid redundant work with 0 size Waiman Long
2022-02-02 20:30         ` Waiman Long
2022-02-08 10:08         ` Petr Mladek
2022-02-02 20:30       ` [PATCH v4 3/4] mm/page_owner: Print memcg information Waiman Long
2022-02-02 20:30         ` Waiman Long
     [not found]         ` <20220202203036.744010-4-longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2022-02-03  6:53           ` Mike Rapoport
2022-02-03  6:53             ` Mike Rapoport
2022-02-03 12:46           ` Michal Hocko
2022-02-03 12:46             ` Michal Hocko
     [not found]             ` <YfvOp5VXrxy9IW1w-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2022-02-03 19:03               ` Waiman Long
2022-02-03 19:03                 ` Waiman Long
2022-02-07 17:20                 ` Michal Hocko
     [not found]                   ` <YgFUxFI5bMbc42j4-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2022-02-07 19:09                     ` Andrew Morton
2022-02-07 19:09                       ` Andrew Morton
     [not found]                       ` <20220207110947.f07b58898d91c02090f9aacf-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2022-02-07 19:33                         ` Waiman Long
2022-02-07 19:33                           ` Waiman Long
2022-02-02 20:30       ` [PATCH v4 4/4] mm/page_owner: Record task command name Waiman Long
2022-02-02 20:30         ` Waiman Long

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220131192308.608837-2-longman@redhat.com \
    --to=longman-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=aquini-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=guro-b10kYP2dOMg@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=linux-qQsb+v5E8BnlAoU/VqSP6n9LOBIZ5rWg@public.gmane.org \
    --cc=mhocko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=pmladek-IBi9RG/b67k@public.gmane.org \
    --cc=rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org \
    --cc=rppt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=senozhatsky-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=vdavydov.dev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.