V4L/DVB: remove unneeded null check in anysee_probe()

Message ID 20100531192632.GZ5483@bicker (mailing list archive)
State Superseded, archived
Headers

Commit Message

Dan Carpenter May 31, 2010, 7:27 p.m. UTC
  Smatch complained because "d" is dereferenced first and then checked for
null later .  The only code path where "d" could be a invalid pointer is
if this is a cold device in dvb_usb_device_init().  I consulted Antti 
Palosaari and he explained that anysee is always a warm device.

I have added a comment and removed the unneeded null check.

Signed-off-by: Dan Carpenter <error27@gmail.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Comments

Jiri Kosina June 16, 2010, 3:56 p.m. UTC | #1
On Mon, 31 May 2010, Dan Carpenter wrote:

> Smatch complained because "d" is dereferenced first and then checked for
> null later .  The only code path where "d" could be a invalid pointer is
> if this is a cold device in dvb_usb_device_init().  I consulted Antti 
> Palosaari and he explained that anysee is always a warm device.
> 
> I have added a comment and removed the unneeded null check.
> 
> Signed-off-by: Dan Carpenter <error27@gmail.com>
> 
> diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
> index faca1ad..aa5c7d5 100644
> --- a/drivers/media/dvb/dvb-usb/anysee.c
> +++ b/drivers/media/dvb/dvb-usb/anysee.c
> @@ -463,6 +463,11 @@ static int anysee_probe(struct usb_interface *intf,
>  	if (intf->num_altsetting < 1)
>  		return -ENODEV;
>  
> +	/*
> +	 * Anysee is always warm (its USB-bridge, Cypress FX2, uploads
> +	 * firmware from eeprom).  If dvb_usb_device_init() succeeds that
> +	 * means d is a valid pointer.
> +	 */
>  	ret = dvb_usb_device_init(intf, &anysee_properties, THIS_MODULE, &d,
>  		adapter_nr);
>  	if (ret)
> @@ -479,10 +484,7 @@ static int anysee_probe(struct usb_interface *intf,
>  	if (ret)
>  		return ret;
>  
> -	if (d)
> -		ret = anysee_init(d);
> -
> -	return ret;
> +	return anysee_init(d);

Doesn't seem to be present in linux-next as of today. Mauro, will you 
take it?
Or I can take it if you ack it.

Thanks,
  
Mauro Carvalho Chehab July 5, 2010, 5:14 p.m. UTC | #2
Em 16-06-2010 12:56, Jiri Kosina escreveu:
> On Mon, 31 May 2010, Dan Carpenter wrote:
> 
>> Smatch complained because "d" is dereferenced first and then checked for
>> null later .  The only code path where "d" could be a invalid pointer is
>> if this is a cold device in dvb_usb_device_init().  I consulted Antti 
>> Palosaari and he explained that anysee is always a warm device.
>>
>> I have added a comment and removed the unneeded null check.
>>
>> Signed-off-by: Dan Carpenter <error27@gmail.com>
>>
>> diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
>> index faca1ad..aa5c7d5 100644
>> --- a/drivers/media/dvb/dvb-usb/anysee.c
>> +++ b/drivers/media/dvb/dvb-usb/anysee.c
>> @@ -463,6 +463,11 @@ static int anysee_probe(struct usb_interface *intf,
>>  	if (intf->num_altsetting < 1)
>>  		return -ENODEV;
>>  
>> +	/*
>> +	 * Anysee is always warm (its USB-bridge, Cypress FX2, uploads
>> +	 * firmware from eeprom).  If dvb_usb_device_init() succeeds that
>> +	 * means d is a valid pointer.
>> +	 */
>>  	ret = dvb_usb_device_init(intf, &anysee_properties, THIS_MODULE, &d,
>>  		adapter_nr);
>>  	if (ret)
>> @@ -479,10 +484,7 @@ static int anysee_probe(struct usb_interface *intf,
>>  	if (ret)
>>  		return ret;
>>  
>> -	if (d)
>> -		ret = anysee_init(d);
>> -
>> -	return ret;
>> +	return anysee_init(d);
> 
> Doesn't seem to be present in linux-next as of today. Mauro, will you 
> take it?
> Or I can take it if you ack it.

Sorry, I'm delayed on applying patches on my tree, due to two long trips and
the huge amount of patches that were sent those days.

I'm applying it on my tree right now.

Cheers,
Mauro.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
index faca1ad..aa5c7d5 100644
--- a/drivers/media/dvb/dvb-usb/anysee.c
+++ b/drivers/media/dvb/dvb-usb/anysee.c
@@ -463,6 +463,11 @@  static int anysee_probe(struct usb_interface *intf,
 	if (intf->num_altsetting < 1)
 		return -ENODEV;
 
+	/*
+	 * Anysee is always warm (its USB-bridge, Cypress FX2, uploads
+	 * firmware from eeprom).  If dvb_usb_device_init() succeeds that
+	 * means d is a valid pointer.
+	 */
 	ret = dvb_usb_device_init(intf, &anysee_properties, THIS_MODULE, &d,
 		adapter_nr);
 	if (ret)
@@ -479,10 +484,7 @@  static int anysee_probe(struct usb_interface *intf,
 	if (ret)
 		return ret;
 
-	if (d)
-		ret = anysee_init(d);
-
-	return ret;
+	return anysee_init(d);
 }
 
 static struct usb_device_id anysee_table[] = {