[PATCH] isa: Remove unnecessary checks

Vladislav Efanov posted 1 patch 2 years, 8 months ago
drivers/base/isa.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
[PATCH] isa: Remove unnecessary checks
Posted by Vladislav Efanov 2 years, 8 months ago
The isa_dev->dev.platform_data is initialized with incoming
parameter isa_driver. After it isa_dev->dev.platform_data is
checked for NULL, but incoming parameter isa_driver is not
NULL since it is dereferenced many times before this check.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: a5117ba7da37 ("[PATCH] Driver model: add ISA bus")
Signed-off-by: Vladislav Efanov <VEfanov@ispras.ru>
---
 drivers/base/isa.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/base/isa.c b/drivers/base/isa.c
index 55e3ee2da98f..675ad3139224 100644
--- a/drivers/base/isa.c
+++ b/drivers/base/isa.c
@@ -149,11 +149,8 @@ int isa_register_driver(struct isa_driver *isa_driver, unsigned int ndev)
 			break;
 		}
 
-		if (isa_dev->dev.platform_data) {
-			isa_dev->next = isa_driver->devices;
-			isa_driver->devices = &isa_dev->dev;
-		} else
-			device_unregister(&isa_dev->dev);
+		isa_dev->next = isa_driver->devices;
+		isa_driver->devices = &isa_dev->dev;
 	}
 
 	if (!error && !isa_driver->devices)
-- 
2.34.1
Re: [PATCH] isa: Remove unnecessary checks
Posted by William Breathitt Gray 2 years, 8 months ago
On Wed, May 17, 2023 at 03:50:25PM +0300, Vladislav Efanov wrote:
> The isa_dev->dev.platform_data is initialized with incoming
> parameter isa_driver. After it isa_dev->dev.platform_data is
> checked for NULL, but incoming parameter isa_driver is not
> NULL since it is dereferenced many times before this check.
> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: a5117ba7da37 ("[PATCH] Driver model: add ISA bus")
> Signed-off-by: Vladislav Efanov <VEfanov@ispras.ru>

I don't think the Fixes line is needed because this is removing a
superfluous check rather than fixing a bug. Regardless, here's my Ack
for Greg as the patch itself makes sense.

Acked-by: William Breathitt Gray <william.gray@linaro.org>

> ---
>  drivers/base/isa.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/base/isa.c b/drivers/base/isa.c
> index 55e3ee2da98f..675ad3139224 100644
> --- a/drivers/base/isa.c
> +++ b/drivers/base/isa.c
> @@ -149,11 +149,8 @@ int isa_register_driver(struct isa_driver *isa_driver, unsigned int ndev)
>  			break;
>  		}
>  
> -		if (isa_dev->dev.platform_data) {
> -			isa_dev->next = isa_driver->devices;
> -			isa_driver->devices = &isa_dev->dev;
> -		} else
> -			device_unregister(&isa_dev->dev);
> +		isa_dev->next = isa_driver->devices;
> +		isa_driver->devices = &isa_dev->dev;
>  	}
>  
>  	if (!error && !isa_driver->devices)
> -- 
> 2.34.1
> 
Re: [PATCH] isa: Remove unnecessary checks
Posted by Greg Kroah-Hartman 2 years, 8 months ago
On Thu, May 18, 2023 at 09:46:21PM -0400, William Breathitt Gray wrote:
> On Wed, May 17, 2023 at 03:50:25PM +0300, Vladislav Efanov wrote:
> > The isa_dev->dev.platform_data is initialized with incoming
> > parameter isa_driver. After it isa_dev->dev.platform_data is
> > checked for NULL, but incoming parameter isa_driver is not
> > NULL since it is dereferenced many times before this check.
> > 
> > Found by Linux Verification Center (linuxtesting.org) with SVACE.
> > 
> > Fixes: a5117ba7da37 ("[PATCH] Driver model: add ISA bus")
> > Signed-off-by: Vladislav Efanov <VEfanov@ispras.ru>
> 
> I don't think the Fixes line is needed because this is removing a
> superfluous check rather than fixing a bug. Regardless, here's my Ack
> for Greg as the patch itself makes sense.
> 
> Acked-by: William Breathitt Gray <william.gray@linaro.org>

Yes, the Fixes line makes no sense at all.  I'll delete it when
applying, thanks for the review.

greg k-h