From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754069AbbEOJci (ORCPT ); Fri, 15 May 2015 05:32:38 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:50007 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751293AbbEOJce (ORCPT ); Fri, 15 May 2015 05:32:34 -0400 From: Arnd Bergmann To: Alan Stern Cc: Rob Herring , Greg Kroah-Hartman , Kishon Vijay Abraham I , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org Subject: Re: [PATCH 5/5] usb: add pxa1928 ehci support Date: Fri, 15 May 2015 11:32:12 +0200 Message-ID: <4475721.5hJuZmGMm7@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:HY0vdtvKTfrCCdJSQ+v+vJ5XtO2Ikhn4cYz+Vy18YTGQ8ttVR4R 1yg0ryJXzYKn35ZFczK4XuG3K7E7VZVNDiqSSzQkZK/ZW9/CTLuRew0PehUADJDEoCwrsBG KTzm9BYBgCxDY5XLLz2Y0bv0UXqGmnWSp9jaBfYaMbjZCCtLPTiUDEKjw7xYTGD84sKVgvn ijWAjEafMIAT145F5XfMA== X-UI-Out-Filterresults: notjunk:1; Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday 14 May 2015 11:55:36 Alan Stern wrote: > > > + hcd->phy = devm_of_phy_get(&pdev->dev, pdev->dev.of_node, NULL); > > + if (IS_ERR_OR_NULL(hcd->phy)) { > > + retval = PTR_ERR(hcd->phy); > > + if (retval != -EPROBE_DEFER && retval != -ENODEV) > > + dev_err(&pdev->dev, "failed to get the phy\n"); > > + else > > + return -EPROBE_DEFER; > > + goto err_put_hcd; > > + } > > Please straighten out this convoluted logic. It should go like this: > > hcd->phy = devm_of_phy_get(&pdev->dev, pdev->dev.of_node, NULL); > if (IS_ERR_OR_NULL(hcd->phy)) { > retval = PTR_ERR(hcd->phy); > if (retval == -EPROBE_DEFER || retval == -ENODEV) > return -EPROBE_DEFER; > dev_err(&pdev->dev, "failed to get the phy\n"); > goto err_put_hcd; > } > IS_ERR_OR_NULL is almost always wrong. Kernel interfaces that can return an error pointer should never return a NULL pointer, and I'm pretty sure that is also the case for the phy subsystem (or else it should be fixed). In some cases, we have interfaces that return NULL pointers or error pointers, but those are designed to treat NULL as success. Arnd