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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2603C2BB3F for ; Sat, 18 Nov 2023 12:02:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229864AbjKRMCy (ORCPT ); Sat, 18 Nov 2023 07:02:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229510AbjKRMCx (ORCPT ); Sat, 18 Nov 2023 07:02:53 -0500 Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [IPv6:2a0a:51c0:0:237:300::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FCA0194; Sat, 18 Nov 2023 04:02:49 -0800 (PST) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1r4K1z-0002nv-2p; Sat, 18 Nov 2023 13:02:35 +0100 Date: Sat, 18 Nov 2023 13:02:35 +0100 From: Florian Westphal To: Kamil Duljas Cc: Jakub Kicinski , "David S . Miller" , Eric Dumazet , Paolo Abeni , Jiri Pirko , Johannes Berg , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] genetlink: Prevent memory leak when krealloc fail Message-ID: <20231118120235.GA30289@breakpoint.cc> References: <20231118113357.1999-1-kamil.duljas@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231118113357.1999-1-kamil.duljas@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kamil Duljas wrote: > genl_allocate_reserve_groups() allocs new memory in while loop > but if krealloc fail, the memory allocated by kzalloc is not freed. > It seems allocated memory is unnecessary when the function > returns -ENOMEM Why should it be free'd? mc_groups is not a local variable. > new_groups = krealloc(mc_groups, nlen, > GFP_KERNEL); > - if (!new_groups) > + if (!new_groups) { > + kfree(mc_groups); > return -ENOMEM; > + } How did you test this? AFAICS this results in use-after-free for every access to mc_groups after this error path is taken. Existing code looks correct, we can't grow mc_groups and return an error.