From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CF7438BB0 for ; Wed, 18 Oct 2023 15:13:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kO6R+J/9" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27BECC433C8; Wed, 18 Oct 2023 15:13:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697642022; bh=OtMZJC4ksDaFAbMIle5La8GtkKZfjR5M26IvH6z9TWU=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=kO6R+J/9Pjw9QBJnmDA2dT9dlrqIiqw1mN3yDaPTh1L2g1FW0y+UZJW1nB9AvKBs3 QDYketdSOC0FIM/ve73XTnjD+kbXkyHsUu3Kr+W91MyvpoIB1JH4J4Q+DRpFdf3MM+ S/egBCRBG71SzmuRmrjLcXr9gOTG9hx+8mukHykzXzUrG6GpkE3aiwFGE+IljAOSeZ Us9zKmSuUy0Y9XmKY8BypEa0pfKJ4afJEph/0VUYzkbwCWEBj79KOuIPDkxnaC8m/l fuJ2LJWj1ExUHIcWaRSHLfYldLno99SOyVwP1anXX4AHl4guEF949WrOKWg1yRgt6f ZDHW9K21i2FkQ== Date: Wed, 18 Oct 2023 08:13:41 -0700 From: Jakub Kicinski To: Jiri Pirko Cc: davem@davemloft.net, netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com, przemyslaw.kitszel@intel.com, daniel@iogearbox.net, opurdila@ixiacom.com Subject: Re: [PATCH net v2 1/5] net: fix ifname in netlink ntf during netns move Message-ID: <20231018081341.66bf393b@kernel.org> In-Reply-To: References: <20231018013817.2391509-1-kuba@kernel.org> <20231018013817.2391509-2-kuba@kernel.org> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 18 Oct 2023 09:12:58 +0200 Jiri Pirko wrote: > >+static int dev_prep_valid_name(struct net *net, struct net_device *dev, > >+ const char *want_name, char *out_name) > >+{ > >+ int ret; > >+ > >+ if (!dev_valid_name(want_name)) > >+ return -EINVAL; > >+ > >+ if (strchr(want_name, '%')) { > >+ ret = __dev_alloc_name(net, want_name, out_name); > >+ return ret < 0 ? ret : 0; > >+ } else if (netdev_name_in_use(net, want_name)) { > >+ return -EEXIST; > >+ } else if (out_name != want_name) { > > How this can happen? > You call dev_prep_valid_name() twice: > ret = dev_prep_valid_name(net, dev, name, buf); > err = dev_prep_valid_name(net, dev, pat, new_name); > > Both buf and new_name are on stack tmp variables. I'm moving this code 1-to-1. I have patches queued up to clean all this up in net-next. Please let me know if you see any bugs.