Messages in this thread | | | Date | Thu, 3 Feb 2022 13:49:02 -0500 | Subject | Re: [PATCH v4 2/4] mm/page_owner: Use scnprintf() to avoid excessive buffer overrun check | From | Waiman Long <> |
| |
On 2/3/22 10:46, Vlastimil Babka wrote: > On 2/2/22 21:30, Waiman Long wrote: >> The snprintf() function can return a length greater than the given >> input size. That will require a check for buffer overrun after each >> invocation of snprintf(). scnprintf(), on the other hand, will never >> return a greater length. By using scnprintf() in selected places, we >> can avoid some buffer overrun checks except after stack_depot_snprint() >> and after the last snprintf(). >> >> Signed-off-by: Waiman Long <longman@redhat.com> >> Acked-by: David Rientjes <rientjes@google.com> >> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> > Looks like this will work, but note that if the purpose of patch 1/4 was > that after the first scnprintf() that overflows the following calls will be > short-cut thanks to passing the size as 0, AFAICS that won't work. Because > scnprintf() returns the number without trailing zero, 'ret' will be 'count - > 1' after the overflow, so 'count - ret' will be 1, never 0.
Yes, I am aware of that. Patch 1 is just a micro-optimization for the very rare case.
Cheers, Longman
| |