Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp504675rwb; Mon, 26 Sep 2022 01:53:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM70UtKhC2L8TWK3O7PMj+cF/NRILwAruKKl2WWGlJb+P/spenCUUsf8w88jprv88TPlJocc X-Received: by 2002:a50:a698:0:b0:457:26fa:4fd3 with SMTP id e24-20020a50a698000000b0045726fa4fd3mr6658327edc.286.1664182434254; Mon, 26 Sep 2022 01:53:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664182434; cv=none; d=google.com; s=arc-20160816; b=MCGw4t1wn25uDY4vW8Jl6nODOdxSBZtndTdKLkzANSYaUCn/baNz/vcWj0Yq6NjlEz SV+C+tVIZ2VMjArZpcEFmOfRPm1MxIr3OWHIC8aaSDTLcIb8NgcOxx3hh9Aa/uniGMNR Fi1hOiKyLlZGr5pJM65ChVqCEu873rW6QCMd2o+BaLy+VjbRiYO6MRyoh2sIfO9mEJOS D1J5153VaV0EG0muhjhX/OR+MXHadaob7DXSCLv9c0BZ4i05w+XxT3cAb48dLBjPjw2u I5GXwPEW6C4IfBcTf/yZAuHc41sgeivyZyXzlTAXnpI9L/hstLx6XJqvm/EZzs9+Rtws WVsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=dOdxxJUkBsC2OXrOGOh24t3YJT8MpdNh9tPKSRaq/tg=; b=0M/5/0SAxkSKdSjZ1sIZsK7W3taqLpMqeCjI/s7CBw94x25S1J3y/4UUwZByzuSB9J AjKRn9FBVgon5GQ/NgF9IbVpkhpsrun6UOdAYekwe7KkugAPS+7hJmGTgXxrtBMHQY80 KnC6oVlYWZet1SQ8QGHwUdq/lZQ5FKw6ZjXqlIMTBjuVfsm6ToWdbDXZmnMESuA3Ylpz cJKeGXG/vmlaOJ+mEevYYeKzvXqDe55G0O5FkRaEJRBzrWPWZE7w06hc8hDj99lJt2sZ fJ/7wzPmNOTZh7UPs41D7RzuTT0TcTYSBBb7fuIUEwzOMIQOXOh4nS6muSh7xsjMyoJO Od9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LStozAeG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i9-20020a1709061e4900b0073da0ce043csi13250685ejj.619.2022.09.26.01.53.28; Mon, 26 Sep 2022 01:53:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LStozAeG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234155AbiIZIYY (ORCPT + 99 others); Mon, 26 Sep 2022 04:24:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234179AbiIZIYU (ORCPT ); Mon, 26 Sep 2022 04:24:20 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 994FE357C2 for ; Mon, 26 Sep 2022 01:24:17 -0700 (PDT) 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 ams.source.kernel.org (Postfix) with ESMTPS id 2BD6CB8199A for ; Mon, 26 Sep 2022 08:24:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F169C433D6; Mon, 26 Sep 2022 08:24:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664180654; bh=c8+4swMzdIG1QtHtMY9tXBxXJZpDGIIEJOhbgPCJ08I=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=LStozAeGmVUIs7vHWYRTprJR5IqB7JIkcDi/A1/JC8ENdicJMCzceQV77PQT6BUDo iqLRWoXtdBBBCrbtN45TAtkEMi9D3IeKsDe+CH9OWWG2slvjvK1YJUfovK8zHNiUnG +R7PY+gDfdWSXugPMpY03iirF/4C+kj5qVrDlZoTjTI+Wauh0MPIiQ0vPnUcVEwLQH ALbRJTVUMLAVYJOZphTXvmXllnTsuZdgRYYuVhPIhjoViMGew4DX6qrU3k4CmTW4Wd UoWWd40u95FTDgTgUokvXKPstACpONSU33zs5odgaZ5nLsF+wmscRoROlXpS3BykPt ZXt/l4py7FzNg== Message-ID: <7248d8bc-8a5b-92f3-abd8-26c3f029251a@kernel.org> Date: Mon, 26 Sep 2022 16:24:08 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: Re: [PATCH v2] mm/slub: clean up create_unique_id() Content-Language: en-US To: Vlastimil Babka , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Hugh Dickins Cc: Chao Yu , Christophe JAILLET , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20220925071207.13183-1-chao@kernel.org> <514669a4-3ce9-c3b7-b293-ab9514f161b3@suse.cz> From: Chao Yu In-Reply-To: <514669a4-3ce9-c3b7-b293-ab9514f161b3@suse.cz> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/9/26 16:22, Vlastimil Babka wrote: > On 9/25/22 09:12, Chao Yu wrote: >> From: Chao Yu >> >> As Christophe JAILLET suggested: >> >> In create_unique_id(), >> >> "looks that ID_STR_LENGTH could even be reduced to 32 or 16. >> >> The 2nd BUG_ON at the end of the function could certainly be just >> removed as well or remplaced by a: >>          if (p > name + ID_STR_LENGTH - 1) { >>                  kfree(name); >>                  return -E; >>          } >> " >> >> According to above suggestion, let's do below cleanups: >> 1. reduce ID_STR_LENGTH to 32, as the buffer size should be enough; >> 2. use WARN_ON instead of BUG_ON() and return error if check condition >> is true; >> 3. use snprintf instead of sprintf to avoid overflow. >> >> Link: https://lore.kernel.org/linux-mm/2025305d-16db-abdf-6cd3-1fb93371c2b4@wanadoo.fr/ >> Fixes: 81819f0fc828 ("SLUB core") >> Suggested-by: Christophe JAILLET >> Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> >> Signed-off-by: Chao Yu >> --- >> v2: >> - add WARN_ON() instead of return error silently; >> - use snprintf instead of sprintf to avoid overflow. >>   mm/slub.c | 10 +++++++--- >>   1 file changed, 7 insertions(+), 3 deletions(-) >> >> diff --git a/mm/slub.c b/mm/slub.c >> index 4b98dff9be8e..3d37a8a7b965 100644 >> --- a/mm/slub.c >> +++ b/mm/slub.c >> @@ -5890,7 +5890,7 @@ static inline struct kset *cache_kset(struct kmem_cache *s) >>       return slab_kset; >>   } >> -#define ID_STR_LENGTH 64 >> +#define ID_STR_LENGTH 32 >>   /* Create a unique string id for a slab cache: >>    * >> @@ -5924,9 +5924,13 @@ static char *create_unique_id(struct kmem_cache *s) >>           *p++ = 'A'; >>       if (p != name + 1) >>           *p++ = '-'; >> -    p += sprintf(p, "%07u", s->size); >> +    p += snprintf(p, ID_STR_LENGTH - 1 - (p - name), "%07u", s->size); > > I think we don't need "- 1" here as snprintf() says: > @size: The size of the buffer, including the trailing null space Oops, my bad. > >> -    BUG_ON(p > name + ID_STR_LENGTH - 1); >> +    if (p > name + ID_STR_LENGTH - 1) { >> +        WARN_ON(1); > > This would be shorter: if (WARN_ON(p > name...)) Thanks for the comments, will update soon. Thanks, > >> +        kfree(name); >> +        return ERR_PTR(-EINVAL); >> +    } >>       return name; >>   } >