On Fri, Sep 06, 2019 at 05:25:14PM +0200, Pascal van Leeuwen wrote:
> This patch fixes an unused variable warning from the compiler when the
> driver is being compiled without PCI support in the kernel.
> 
> changes since v1:
> - capture the platform_register_driver error code as well
> - actually return the (last) error code
> - swapped registration to do PCI first as that's just for development
>   boards anyway, so in case both are done we want the platform error
>   or no error at all if that passes
> - also fixes some indentation issue in the affected code
> 
> changes since v2:
> - handle the situation where both CONFIG_PCI and CONFIG_OF are undefined
>   by always returning a -EINVAL error
> - only unregister PCI or OF if it was previously successfully registered
> 
> Signed-off-by: Pascal van Leeuwen <pvanleeu...@verimatrix.com>
> ---
>  drivers/crypto/inside-secure/safexcel.c | 35 
> ++++++++++++++++++++++-----------
>  1 file changed, 24 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/crypto/inside-secure/safexcel.c 
> b/drivers/crypto/inside-secure/safexcel.c
> index e12a2a3..925c90f 100644
> --- a/drivers/crypto/inside-secure/safexcel.c
> +++ b/drivers/crypto/inside-secure/safexcel.c
> @@ -1501,32 +1501,45 @@ void safexcel_pci_remove(struct pci_dev *pdev)
>  };
>  #endif
>  
> -static int __init safexcel_init(void)
> -{
> -     int rc;
> -
> +/* Unfortunately, we have to resort to global variables here */
> +#if IS_ENABLED(CONFIG_PCI)
> +int pcireg_rc = -EINVAL; /* Default safe value */
> +#endif
>  #if IS_ENABLED(CONFIG_OF)
> -             /* Register platform driver */
> -             platform_driver_register(&crypto_safexcel);
> +int ofreg_rc = -EINVAL; /* Default safe value */
>  #endif
>  
> +static int __init safexcel_init(void)
> +{
>  #if IS_ENABLED(CONFIG_PCI)
> -             /* Register PCI driver */
> -             rc = pci_register_driver(&safexcel_pci_driver);
> +     /* Register PCI driver */
> +     pcireg_rc = pci_register_driver(&safexcel_pci_driver);
>  #endif
>  
> -     return 0;
> +#if IS_ENABLED(CONFIG_OF)
> +     /* Register platform driver */
> +     ofreg_rc = platform_driver_register(&crypto_safexcel);
> +     return ofreg_rc;

If OF registration fails then you will return an error even if
PCI registration succeeded without undoing the PCI registration.

Cheers,
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply via email to