From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Ellerman Subject: Re: [net] Revert "net: core: maybe return -EEXIST in __dev_alloc_name" Date: Tue, 19 Dec 2017 23:28:21 +1100 Message-ID: <87vah29a1m.fsf@concordia.ellerman.id.au> References: <20171202074155.29146-1-johannes@sipsolutions.net> Mime-Version: 1.0 Content-Type: text/plain Cc: "netdev\@vger.kernel.org" , "Jouni Malinen" , "Rasmus Villemoes" , "Johannes Berg" , "linuxppc-dev\@lists.ozlabs.org" To: "Johannes Berg" Return-path: Received: from ozlabs.org ([103.22.144.67]:42295 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751933AbdLSM2X (ORCPT ); Tue, 19 Dec 2017 07:28:23 -0500 In-Reply-To: <20171202074155.29146-1-johannes@sipsolutions.net> (Johannes Berg's message of "Sat, 2 Dec 2017 08:41:55 +0100") Sender: netdev-owner@vger.kernel.org List-ID: Hi Johannes, > From: Johannes Berg > > This reverts commit d6f295e9def0; some userspace (in the case > we noticed it's wpa_supplicant), is relying on the current > error code to determine that a fixed name interface already > exists. > > Reported-by: Jouni Malinen > Signed-off-by: Johannes Berg > --- > net/core/dev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) This revert seems to have broken networking on one of my powerpc machines, according to git bisect. The symptom is DHCP fails and I don't get a link, I didn't dig any further than that. I can if it's helpful. I think the problem is that 87c320e51519 ("net: core: dev_get_valid_name is now the same as dev_alloc_name_ns") only makes sense while d6f295e9def0 remains in the tree. ie. before the entire series, dev_get_valid_name() would return EEXIST, and that was retained when 87c320e51519 was merged, but now that d6f295e9def0 has been reverted dev_get_valid_name() is returning ENFILE. I can get the network up again if I also revert 87c320e51519 ("net: core: dev_get_valid_name is now the same as dev_alloc_name_ns"), or with the gross patch below. cheers diff --git a/net/core/dev.c b/net/core/dev.c index f47e96b62308..d0304461ad32 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1146,7 +1146,11 @@ EXPORT_SYMBOL(dev_alloc_name); int dev_get_valid_name(struct net *net, struct net_device *dev, const char *name) { - return dev_alloc_name_ns(net, dev, name); + int rc = dev_alloc_name_ns(net, dev, name); + if (rc == -ENFILE) + rc = -EEXIST; + + return rc; } EXPORT_SYMBOL(dev_get_valid_name);