linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] TDA1997x: fix tda1997x_remove()
@ 2021-07-26 10:44 Krzysztof Hałasa
  2021-07-29  9:55 ` Hans Verkuil
  0 siblings, 1 reply; 3+ messages in thread
From: Krzysztof Hałasa @ 2021-07-26 10:44 UTC (permalink / raw)
  To: Tim Harvey; +Cc: Mauro Carvalho Chehab, linux-media, linux-kernel

TDA1997x I2C "client data" pointer was never set in tda1997x_probe(),
then the code tried to use invalid pointer in tda1997x_remove().

Signed-off-by: Krzysztof Hałasa <khalasa@piap.pl>

diff --git a/drivers/media/i2c/tda1997x.c b/drivers/media/i2c/tda1997x.c
index 71194746c874..043cc8275d00 100644
--- a/drivers/media/i2c/tda1997x.c
+++ b/drivers/media/i2c/tda1997x.c
@@ -2771,6 +2771,7 @@ static int tda1997x_probe(struct i2c_client *client,
 		goto err_free_media;
 	}
 
+	i2c_set_clientdata(client, sd);
 	return 0;
 
 err_free_media:

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] TDA1997x: fix tda1997x_remove()
  2021-07-26 10:44 [PATCH] TDA1997x: fix tda1997x_remove() Krzysztof Hałasa
@ 2021-07-29  9:55 ` Hans Verkuil
  2021-07-29 11:07   ` Krzysztof Hałasa
  0 siblings, 1 reply; 3+ messages in thread
From: Hans Verkuil @ 2021-07-29  9:55 UTC (permalink / raw)
  To: Krzysztof Hałasa, Tim Harvey
  Cc: Mauro Carvalho Chehab, linux-media, linux-kernel

On 26/07/2021 12:44, Krzysztof Hałasa wrote:
> TDA1997x I2C "client data" pointer was never set in tda1997x_probe(),
> then the code tried to use invalid pointer in tda1997x_remove().
> 
> Signed-off-by: Krzysztof Hałasa <khalasa@piap.pl>
> 
> diff --git a/drivers/media/i2c/tda1997x.c b/drivers/media/i2c/tda1997x.c
> index 71194746c874..043cc8275d00 100644
> --- a/drivers/media/i2c/tda1997x.c
> +++ b/drivers/media/i2c/tda1997x.c
> @@ -2771,6 +2771,7 @@ static int tda1997x_probe(struct i2c_client *client,
>  		goto err_free_media;
>  	}
>  
> +	i2c_set_clientdata(client, sd);
>  	return 0;
>  
>  err_free_media:
> 

Actually, v4l2_i2c_subdev_init() sets this, and v4l2_i2c_subdev_init() *is* called.
Does it really crash in tda1997x_remove() without this patch?

If so, then I suspect something else is going on.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] TDA1997x: fix tda1997x_remove()
  2021-07-29  9:55 ` Hans Verkuil
@ 2021-07-29 11:07   ` Krzysztof Hałasa
  0 siblings, 0 replies; 3+ messages in thread
From: Krzysztof Hałasa @ 2021-07-29 11:07 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Tim Harvey, Mauro Carvalho Chehab, linux-media, linux-kernel

Hans,

Hans Verkuil <hverkuil@xs4all.nl> writes:

>> +++ b/drivers/media/i2c/tda1997x.c
>> @@ -2771,6 +2771,7 @@ static int tda1997x_probe(struct i2c_client *client,
>>  		goto err_free_media;
>>  	}
>>  
>> +	i2c_set_clientdata(client, sd);
>>  	return 0;
>>  
>>  err_free_media:
>> 
>
> Actually, v4l2_i2c_subdev_init() sets this, and v4l2_i2c_subdev_init() *is* called.
> Does it really crash in tda1997x_remove() without this patch?

Yes, the pointer was once invalid (IIRC), and in other cases NULL.

> If so, then I suspect something else is going on.

I'll investigate further, then.

Thanks,
-- 
Krzysztof "Chris" Hałasa

Sieć Badawcza Łukasiewicz
Przemysłowy Instytut Automatyki i Pomiarów PIAP
Al. Jerozolimskie 202, 02-486 Warszawa

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-07-29 11:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-26 10:44 [PATCH] TDA1997x: fix tda1997x_remove() Krzysztof Hałasa
2021-07-29  9:55 ` Hans Verkuil
2021-07-29 11:07   ` Krzysztof Hałasa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).