* [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
@ 2015-09-14 16:08 Vaishali Thakkar
2015-09-20 19:18 ` Jonathan Cameron
0 siblings, 1 reply; 10+ messages in thread
From: Vaishali Thakkar @ 2015-09-14 16:08 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, linux-iio,
linux-kernel
Use resourced managed function devm_iio_device_register to
make error path simpler. To be compatible with the change,
the remove function is removed as it is now redundant.
Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
---
drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c b/drivers/iio/gyro/ssp_gyro_sensor.c
index 0a8afdd..ac88de7 100644
--- a/drivers/iio/gyro/ssp_gyro_sensor.c
+++ b/drivers/iio/gyro/ssp_gyro_sensor.c
@@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, indio_dev);
- ret = iio_device_register(indio_dev);
+ ret = devm_iio_device_register(&pdev->dev, indio_dev);
if (ret < 0)
return ret;
@@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct platform_device *pdev)
return 0;
}
-static int ssp_gyro_remove(struct platform_device *pdev)
-{
- struct iio_dev *indio_dev = platform_get_drvdata(pdev);
-
- iio_device_unregister(indio_dev);
-
- return 0;
-}
-
static struct platform_driver ssp_gyro_driver = {
.driver = {
.name = SSP_GYROSCOPE_NAME,
},
.probe = ssp_gyro_probe,
- .remove = ssp_gyro_remove,
};
module_platform_driver(ssp_gyro_driver);
--
1.9.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-14 16:08 [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register Vaishali Thakkar
@ 2015-09-20 19:18 ` Jonathan Cameron
2015-09-21 8:18 ` Karol Wrona
0 siblings, 1 reply; 10+ messages in thread
From: Jonathan Cameron @ 2015-09-20 19:18 UTC (permalink / raw)
To: Vaishali Thakkar
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, linux-iio,
linux-kernel, Karol Wrona
On 14/09/15 17:08, Vaishali Thakkar wrote:
> Use resourced managed function devm_iio_device_register to
> make error path simpler. To be compatible with the change,
> the remove function is removed as it is now redundant.
>
> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
This patch is reasonable, but makes me wonder if there is an issue
in the remove path for this driver. It relies on the ssp_sensors common
module. That in ssp_spi.c uses the fact ssp_register_consumer
has saved the struct iio_dev into a local array in the core driver.
I think this means that a remove of this function will leave a possible
null pointer de reference.
Now I suspect that case doesn't actually occur because the relevant
device elements are disabled whenever this module is removed. Having
said that we might expect an ssp_unregister_consumer function that
sets the relevant pointer back to null on removal so as to avoid
any possible race conditions around driver removal / reprobing.
A spot of defensive programming rather than necessarily a bug to be
fixed!
One little process thing. This driver was written by Karol so patches
should probably always cc Karol as well as the more general
maintainer / reviewers for IIO. Added cc.
Jonathan
> ---
> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c b/drivers/iio/gyro/ssp_gyro_sensor.c
> index 0a8afdd..ac88de7 100644
> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, indio_dev);
>
> - ret = iio_device_register(indio_dev);
> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
> if (ret < 0)
> return ret;
>
> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct platform_device *pdev)
> return 0;
> }
>
> -static int ssp_gyro_remove(struct platform_device *pdev)
> -{
> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
> -
> - iio_device_unregister(indio_dev);
> -
> - return 0;
> -}
> -
> static struct platform_driver ssp_gyro_driver = {
> .driver = {
> .name = SSP_GYROSCOPE_NAME,
> },
> .probe = ssp_gyro_probe,
> - .remove = ssp_gyro_remove,
> };
>
> module_platform_driver(ssp_gyro_driver);
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-20 19:18 ` Jonathan Cameron
@ 2015-09-21 8:18 ` Karol Wrona
2015-09-21 9:53 ` Jonathan Cameron
0 siblings, 1 reply; 10+ messages in thread
From: Karol Wrona @ 2015-09-21 8:18 UTC (permalink / raw)
To: Jonathan Cameron, Vaishali Thakkar
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, linux-iio,
linux-kernel
On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
> On 14/09/15 17:08, Vaishali Thakkar wrote:
>> Use resourced managed function devm_iio_device_register to
>> make error path simpler. To be compatible with the change,
>> the remove function is removed as it is now redundant.
>>
>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
> This patch is reasonable, but makes me wonder if there is an issue
> in the remove path for this driver. It relies on the ssp_sensors common
> module. That in ssp_spi.c uses the fact ssp_register_consumer
> has saved the struct iio_dev into a local array in the core driver.
> I think this means that a remove of this function will leave a possible
> null pointer de reference.
You are right. In this case we need something like
ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove func"
should stay. Of course we can switch to devm iio register.
Also the same can (rather should) be done for accelerometer sensor
(ssp_accel_sensor.c).
Vaishali, if you want please feel free and send patch.
>
> Now I suspect that case doesn't actually occur because the relevant
> device elements are disabled whenever this module is removed. Having
> said that we might expect an ssp_unregister_consumer function that
> sets the relevant pointer back to null on removal so as to avoid
> any possible race conditions around driver removal / reprobing.
> A spot of defensive programming rather than necessarily a bug to be
> fixed!
>
> One little process thing. This driver was written by Karol so patches
> should probably always cc Karol as well as the more general
> maintainer / reviewers for IIO. Added cc.
>
> Jonathan
>> ---
>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>
>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c b/drivers/iio/gyro/ssp_gyro_sensor.c
>> index 0a8afdd..ac88de7 100644
>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device *pdev)
>>
>> platform_set_drvdata(pdev, indio_dev);
>>
>> - ret = iio_device_register(indio_dev);
>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>> if (ret < 0)
>> return ret;
>>
>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct platform_device *pdev)
>> return 0;
>> }
>>
>> -static int ssp_gyro_remove(struct platform_device *pdev)
>> -{
>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>> -
>> - iio_device_unregister(indio_dev);
>> -
>> - return 0;
>> -}
>> -
>> static struct platform_driver ssp_gyro_driver = {
>> .driver = {
>> .name = SSP_GYROSCOPE_NAME,
>> },
>> .probe = ssp_gyro_probe,
>> - .remove = ssp_gyro_remove,
>> };
>>
>> module_platform_driver(ssp_gyro_driver);
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-21 8:18 ` Karol Wrona
@ 2015-09-21 9:53 ` Jonathan Cameron
2015-09-21 11:18 ` Karol Wrona
0 siblings, 1 reply; 10+ messages in thread
From: Jonathan Cameron @ 2015-09-21 9:53 UTC (permalink / raw)
To: Karol Wrona, Jonathan Cameron, Vaishali Thakkar
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, linux-iio,
linux-kernel
On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>> Use resourced managed function devm_iio_device_register to
>>> make error path simpler. To be compatible with the change,
>>> the remove function is removed as it is now redundant.
>>>
>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>> This patch is reasonable, but makes me wonder if there is an issue
>> in the remove path for this driver. It relies on the ssp_sensors
>common
>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>> has saved the struct iio_dev into a local array in the core driver.
>> I think this means that a remove of this function will leave a
>possible
>> null pointer de reference.
>You are right. In this case we need something like
>ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>func"
>should stay. Of course we can switch to devm iio register.
Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
>
>Also the same can (rather should) be done for accelerometer sensor
>(ssp_accel_sensor.c).
>
>Vaishali, if you want please feel free and send patch.
>
>>
>> Now I suspect that case doesn't actually occur because the relevant
>> device elements are disabled whenever this module is removed. Having
>> said that we might expect an ssp_unregister_consumer function that
>> sets the relevant pointer back to null on removal so as to avoid
>> any possible race conditions around driver removal / reprobing.
>> A spot of defensive programming rather than necessarily a bug to be
>> fixed!
>>
>> One little process thing. This driver was written by Karol so patches
>> should probably always cc Karol as well as the more general
>> maintainer / reviewers for IIO. Added cc.
>>
>> Jonathan
>>> ---
>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>
>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>b/drivers/iio/gyro/ssp_gyro_sensor.c
>>> index 0a8afdd..ac88de7 100644
>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>*pdev)
>>>
>>> platform_set_drvdata(pdev, indio_dev);
>>>
>>> - ret = iio_device_register(indio_dev);
>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>> if (ret < 0)
>>> return ret;
>>>
>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>platform_device *pdev)
>>> return 0;
>>> }
>>>
>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>> -{
>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>> -
>>> - iio_device_unregister(indio_dev);
>>> -
>>> - return 0;
>>> -}
>>> -
>>> static struct platform_driver ssp_gyro_driver = {
>>> .driver = {
>>> .name = SSP_GYROSCOPE_NAME,
>>> },
>>> .probe = ssp_gyro_probe,
>>> - .remove = ssp_gyro_remove,
>>> };
>>>
>>> module_platform_driver(ssp_gyro_driver);
>>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-21 9:53 ` Jonathan Cameron
@ 2015-09-21 11:18 ` Karol Wrona
2015-09-27 4:16 ` Vaishali Thakkar
0 siblings, 1 reply; 10+ messages in thread
From: Karol Wrona @ 2015-09-21 11:18 UTC (permalink / raw)
To: Jonathan Cameron, Jonathan Cameron, Vaishali Thakkar
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, linux-iio,
linux-kernel
On 09/21/2015 11:53 AM, Jonathan Cameron wrote:
>
>
> On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>> On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>>> Use resourced managed function devm_iio_device_register to
>>>> make error path simpler. To be compatible with the change,
>>>> the remove function is removed as it is now redundant.
>>>>
>>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>>> This patch is reasonable, but makes me wonder if there is an issue
>>> in the remove path for this driver. It relies on the ssp_sensors
>> common
>>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>>> has saved the struct iio_dev into a local array in the core driver.
>>> I think this means that a remove of this function will leave a
>> possible
>>> null pointer de reference.
>> You are right. In this case we need something like
>> ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>> func"
>> should stay. Of course we can switch to devm iio register.
> Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
So better leave it out:
iio_device_unregister(indio_dev) will disable the buffers and through
ops disables the sensor and than remove iio dev ptr from the internal table.
>>
>> Also the same can (rather should) be done for accelerometer sensor
>> (ssp_accel_sensor.c).
>>
>> Vaishali, if you want please feel free and send patch.
>>
>>>
>>> Now I suspect that case doesn't actually occur because the relevant
>>> device elements are disabled whenever this module is removed. Having
>>> said that we might expect an ssp_unregister_consumer function that
>>> sets the relevant pointer back to null on removal so as to avoid
>>> any possible race conditions around driver removal / reprobing.
>>> A spot of defensive programming rather than necessarily a bug to be
>>> fixed!
>>>
>>> One little process thing. This driver was written by Karol so patches
>>> should probably always cc Karol as well as the more general
>>> maintainer / reviewers for IIO. Added cc.
>>>
>>> Jonathan
>>>> ---
>>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>>
>>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>> b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>> index 0a8afdd..ac88de7 100644
>>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>> *pdev)
>>>>
>>>> platform_set_drvdata(pdev, indio_dev);
>>>>
>>>> - ret = iio_device_register(indio_dev);
>>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>>> if (ret < 0)
>>>> return ret;
>>>>
>>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>> platform_device *pdev)
>>>> return 0;
>>>> }
>>>>
>>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>>> -{
>>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>>> -
>>>> - iio_device_unregister(indio_dev);
>>>> -
>>>> - return 0;
>>>> -}
>>>> -
>>>> static struct platform_driver ssp_gyro_driver = {
>>>> .driver = {
>>>> .name = SSP_GYROSCOPE_NAME,
>>>> },
>>>> .probe = ssp_gyro_probe,
>>>> - .remove = ssp_gyro_remove,
>>>> };
>>>>
>>>> module_platform_driver(ssp_gyro_driver);
>>>>
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>> in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-21 11:18 ` Karol Wrona
@ 2015-09-27 4:16 ` Vaishali Thakkar
2015-09-27 13:31 ` Jonathan Cameron
0 siblings, 1 reply; 10+ messages in thread
From: Vaishali Thakkar @ 2015-09-27 4:16 UTC (permalink / raw)
To: Karol Wrona
Cc: Jonathan Cameron, Jonathan Cameron, Hartmut Knaack,
Lars-Peter Clausen, Peter Meerwald, linux-iio,
Linux Kernel Mailing List
On Mon, Sep 21, 2015 at 4:48 PM, Karol Wrona <k.wrona@samsung.com> wrote:
> On 09/21/2015 11:53 AM, Jonathan Cameron wrote:
>>
>>
>> On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>>> On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>>>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>>>> Use resourced managed function devm_iio_device_register to
>>>>> make error path simpler. To be compatible with the change,
>>>>> the remove function is removed as it is now redundant.
>>>>>
>>>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>>>> This patch is reasonable, but makes me wonder if there is an issue
>>>> in the remove path for this driver. It relies on the ssp_sensors
>>> common
>>>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>>>> has saved the struct iio_dev into a local array in the core driver.
>>>> I think this means that a remove of this function will leave a
>>> possible
>>>> null pointer de reference.
>>> You are right. In this case we need something like
>>> ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>>> func"
>>> should stay. Of course we can switch to devm iio register.
>> Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
> So better leave it out:
> iio_device_unregister(indio_dev) will disable the buffers and through
> ops disables the sensor and than remove iio dev ptr from the internal table.
>
Sorry for the late reply. Yes, I guess I missed the point that
'ssp_register_consumer' is
used in probe function. And I believe that devm_iio_register is useful
only when we
can convert all other functions to their devm counterparts and remove
function will go
away.
But then why don't we need ssp_deregister_consumer here in the remove function?
Is it automatically handled by iio_device_unregister? I guess Karol
tried to explain
the same thing but I am still confused. Same case applies for
ssp_sensors/ssp_dev.c.
>>>
>>> Also the same can (rather should) be done for accelerometer sensor
>>> (ssp_accel_sensor.c).
>>>
>>> Vaishali, if you want please feel free and send patch.
>>>
>>>>
>>>> Now I suspect that case doesn't actually occur because the relevant
>>>> device elements are disabled whenever this module is removed. Having
>>>> said that we might expect an ssp_unregister_consumer function that
>>>> sets the relevant pointer back to null on removal so as to avoid
>>>> any possible race conditions around driver removal / reprobing.
>>>> A spot of defensive programming rather than necessarily a bug to be
>>>> fixed!
>>>>
>>>> One little process thing. This driver was written by Karol so patches
>>>> should probably always cc Karol as well as the more general
>>>> maintainer / reviewers for IIO. Added cc.
>>>>
>>>> Jonathan
>>>>> ---
>>>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>>>
>>>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>>> b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>> index 0a8afdd..ac88de7 100644
>>>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>>> *pdev)
>>>>>
>>>>> platform_set_drvdata(pdev, indio_dev);
>>>>>
>>>>> - ret = iio_device_register(indio_dev);
>>>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>>>> if (ret < 0)
>>>>> return ret;
>>>>>
>>>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>>> platform_device *pdev)
>>>>> return 0;
>>>>> }
>>>>>
>>>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>>>> -{
>>>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>>>> -
>>>>> - iio_device_unregister(indio_dev);
>>>>> -
>>>>> - return 0;
>>>>> -}
>>>>> -
>>>>> static struct platform_driver ssp_gyro_driver = {
>>>>> .driver = {
>>>>> .name = SSP_GYROSCOPE_NAME,
>>>>> },
>>>>> .probe = ssp_gyro_probe,
>>>>> - .remove = ssp_gyro_remove,
>>>>> };
>>>>>
>>>>> module_platform_driver(ssp_gyro_driver);
>>>>>
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>>> in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>
>>
>
--
Vaishali
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-27 4:16 ` Vaishali Thakkar
@ 2015-09-27 13:31 ` Jonathan Cameron
2015-09-28 1:12 ` Vaishali Thakkar
0 siblings, 1 reply; 10+ messages in thread
From: Jonathan Cameron @ 2015-09-27 13:31 UTC (permalink / raw)
To: Vaishali Thakkar, Karol Wrona
Cc: Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
Peter Meerwald, linux-iio, Linux Kernel Mailing List
On 27/09/15 05:16, Vaishali Thakkar wrote:
> On Mon, Sep 21, 2015 at 4:48 PM, Karol Wrona <k.wrona@samsung.com> wrote:
>> On 09/21/2015 11:53 AM, Jonathan Cameron wrote:
>>>
>>>
>>> On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>>>> On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>>>>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>>>>> Use resourced managed function devm_iio_device_register to
>>>>>> make error path simpler. To be compatible with the change,
>>>>>> the remove function is removed as it is now redundant.
>>>>>>
>>>>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>>>>> This patch is reasonable, but makes me wonder if there is an issue
>>>>> in the remove path for this driver. It relies on the ssp_sensors
>>>> common
>>>>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>>>>> has saved the struct iio_dev into a local array in the core driver.
>>>>> I think this means that a remove of this function will leave a
>>>> possible
>>>>> null pointer de reference.
>>>> You are right. In this case we need something like
>>>> ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>>>> func"
>>>> should stay. Of course we can switch to devm iio register.
>>> Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
>> So better leave it out:
>> iio_device_unregister(indio_dev) will disable the buffers and through
>> ops disables the sensor and than remove iio dev ptr from the internal table.
>>
>
> Sorry for the late reply. Yes, I guess I missed the point that
> 'ssp_register_consumer' is
> used in probe function. And I believe that devm_iio_register is useful
> only when we
> can convert all other functions to their devm counterparts and remove
> function will go
> away.
Yes. Exactly.
>
> But then why don't we need ssp_deregister_consumer here in the remove function?
> Is it automatically handled by iio_device_unregister? I guess Karol
> tried to explain
> the same thing but I am still confused. Same case applies for
> ssp_sensors/ssp_dev.c.
We do indeed need an ssp_deregister_consumer function to be called in the remove.
I don't think one currently exists, so that needs fixing.
>
>>>>
>>>> Also the same can (rather should) be done for accelerometer sensor
>>>> (ssp_accel_sensor.c).
>>>>
>>>> Vaishali, if you want please feel free and send patch.
>>>>
>>>>>
>>>>> Now I suspect that case doesn't actually occur because the relevant
>>>>> device elements are disabled whenever this module is removed. Having
>>>>> said that we might expect an ssp_unregister_consumer function that
>>>>> sets the relevant pointer back to null on removal so as to avoid
>>>>> any possible race conditions around driver removal / reprobing.
>>>>> A spot of defensive programming rather than necessarily a bug to be
>>>>> fixed!
>>>>>
>>>>> One little process thing. This driver was written by Karol so patches
>>>>> should probably always cc Karol as well as the more general
>>>>> maintainer / reviewers for IIO. Added cc.
>>>>>
>>>>> Jonathan
>>>>>> ---
>>>>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>>>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>> b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>> index 0a8afdd..ac88de7 100644
>>>>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>>>> *pdev)
>>>>>>
>>>>>> platform_set_drvdata(pdev, indio_dev);
>>>>>>
>>>>>> - ret = iio_device_register(indio_dev);
>>>>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>>>>> if (ret < 0)
>>>>>> return ret;
>>>>>>
>>>>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>>>> platform_device *pdev)
>>>>>> return 0;
>>>>>> }
>>>>>>
>>>>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>>>>> -{
>>>>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>>>>> -
>>>>>> - iio_device_unregister(indio_dev);
>>>>>> -
>>>>>> - return 0;
>>>>>> -}
>>>>>> -
>>>>>> static struct platform_driver ssp_gyro_driver = {
>>>>>> .driver = {
>>>>>> .name = SSP_GYROSCOPE_NAME,
>>>>>> },
>>>>>> .probe = ssp_gyro_probe,
>>>>>> - .remove = ssp_gyro_remove,
>>>>>> };
>>>>>>
>>>>>> module_platform_driver(ssp_gyro_driver);
>>>>>>
>>>>>
>>>>> --
>>>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>>>> in
>>>>> the body of a message to majordomo@vger.kernel.org
>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>>
>>>
>>
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-27 13:31 ` Jonathan Cameron
@ 2015-09-28 1:12 ` Vaishali Thakkar
2015-09-28 10:08 ` Vaishali Thakkar
0 siblings, 1 reply; 10+ messages in thread
From: Vaishali Thakkar @ 2015-09-28 1:12 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Karol Wrona, Jonathan Cameron, Hartmut Knaack,
Lars-Peter Clausen, Peter Meerwald, linux-iio,
Linux Kernel Mailing List
On Sun, Sep 27, 2015 at 7:01 PM, Jonathan Cameron <jic23@kernel.org> wrote:
> On 27/09/15 05:16, Vaishali Thakkar wrote:
>> On Mon, Sep 21, 2015 at 4:48 PM, Karol Wrona <k.wrona@samsung.com> wrote:
>>> On 09/21/2015 11:53 AM, Jonathan Cameron wrote:
>>>>
>>>>
>>>> On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>>>>> On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>>>>>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>>>>>> Use resourced managed function devm_iio_device_register to
>>>>>>> make error path simpler. To be compatible with the change,
>>>>>>> the remove function is removed as it is now redundant.
>>>>>>>
>>>>>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>>>>>> This patch is reasonable, but makes me wonder if there is an issue
>>>>>> in the remove path for this driver. It relies on the ssp_sensors
>>>>> common
>>>>>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>>>>>> has saved the struct iio_dev into a local array in the core driver.
>>>>>> I think this means that a remove of this function will leave a
>>>>> possible
>>>>>> null pointer de reference.
>>>>> You are right. In this case we need something like
>>>>> ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>>>>> func"
>>>>> should stay. Of course we can switch to devm iio register.
>>>> Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
>>> So better leave it out:
>>> iio_device_unregister(indio_dev) will disable the buffers and through
>>> ops disables the sensor and than remove iio dev ptr from the internal table.
>>>
>>
>> Sorry for the late reply. Yes, I guess I missed the point that
>> 'ssp_register_consumer' is
>> used in probe function. And I believe that devm_iio_register is useful
>> only when we
>> can convert all other functions to their devm counterparts and remove
>> function will go
>> away.
> Yes. Exactly.
>>
>> But then why don't we need ssp_deregister_consumer here in the remove function?
>> Is it automatically handled by iio_device_unregister? I guess Karol
>> tried to explain
>> the same thing but I am still confused. Same case applies for
>> ssp_sensors/ssp_dev.c.
> We do indeed need an ssp_deregister_consumer function to be called in the remove.
> I don't think one currently exists, so that needs fixing.
Ok. Then I'll send patches for both of these files.
>>>>>
>>>>> Also the same can (rather should) be done for accelerometer sensor
>>>>> (ssp_accel_sensor.c).
>>>>>
>>>>> Vaishali, if you want please feel free and send patch.
>>>>>
>>>>>>
>>>>>> Now I suspect that case doesn't actually occur because the relevant
>>>>>> device elements are disabled whenever this module is removed. Having
>>>>>> said that we might expect an ssp_unregister_consumer function that
>>>>>> sets the relevant pointer back to null on removal so as to avoid
>>>>>> any possible race conditions around driver removal / reprobing.
>>>>>> A spot of defensive programming rather than necessarily a bug to be
>>>>>> fixed!
>>>>>>
>>>>>> One little process thing. This driver was written by Karol so patches
>>>>>> should probably always cc Karol as well as the more general
>>>>>> maintainer / reviewers for IIO. Added cc.
>>>>>>
>>>>>> Jonathan
>>>>>>> ---
>>>>>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>>>>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>> b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>> index 0a8afdd..ac88de7 100644
>>>>>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>>>>> *pdev)
>>>>>>>
>>>>>>> platform_set_drvdata(pdev, indio_dev);
>>>>>>>
>>>>>>> - ret = iio_device_register(indio_dev);
>>>>>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>>>>>> if (ret < 0)
>>>>>>> return ret;
>>>>>>>
>>>>>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>>>>> platform_device *pdev)
>>>>>>> return 0;
>>>>>>> }
>>>>>>>
>>>>>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>>>>>> -{
>>>>>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>>>>>> -
>>>>>>> - iio_device_unregister(indio_dev);
>>>>>>> -
>>>>>>> - return 0;
>>>>>>> -}
>>>>>>> -
>>>>>>> static struct platform_driver ssp_gyro_driver = {
>>>>>>> .driver = {
>>>>>>> .name = SSP_GYROSCOPE_NAME,
>>>>>>> },
>>>>>>> .probe = ssp_gyro_probe,
>>>>>>> - .remove = ssp_gyro_remove,
>>>>>>> };
>>>>>>>
>>>>>>> module_platform_driver(ssp_gyro_driver);
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>>>>> in
>>>>>> the body of a message to majordomo@vger.kernel.org
>>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>>>
>>>>
>>>
>>
>>
>>
>
--
Vaishali
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-28 1:12 ` Vaishali Thakkar
@ 2015-09-28 10:08 ` Vaishali Thakkar
2015-09-29 10:25 ` Karol Wrona
0 siblings, 1 reply; 10+ messages in thread
From: Vaishali Thakkar @ 2015-09-28 10:08 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Karol Wrona, Jonathan Cameron, Hartmut Knaack,
Lars-Peter Clausen, Peter Meerwald, linux-iio,
Linux Kernel Mailing List
On Mon, Sep 28, 2015 at 6:42 AM, Vaishali Thakkar
<vthakkar1994@gmail.com> wrote:
> On Sun, Sep 27, 2015 at 7:01 PM, Jonathan Cameron <jic23@kernel.org> wrote:
>> On 27/09/15 05:16, Vaishali Thakkar wrote:
>>> On Mon, Sep 21, 2015 at 4:48 PM, Karol Wrona <k.wrona@samsung.com> wrote:
>>>> On 09/21/2015 11:53 AM, Jonathan Cameron wrote:
>>>>>
>>>>>
>>>>> On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>>>>>> On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>>>>>>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>>>>>>> Use resourced managed function devm_iio_device_register to
>>>>>>>> make error path simpler. To be compatible with the change,
>>>>>>>> the remove function is removed as it is now redundant.
>>>>>>>>
>>>>>>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>>>>>>> This patch is reasonable, but makes me wonder if there is an issue
>>>>>>> in the remove path for this driver. It relies on the ssp_sensors
>>>>>> common
>>>>>>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>>>>>>> has saved the struct iio_dev into a local array in the core driver.
>>>>>>> I think this means that a remove of this function will leave a
>>>>>> possible
>>>>>>> null pointer de reference.
>>>>>> You are right. In this case we need something like
>>>>>> ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>>>>>> func"
>>>>>> should stay. Of course we can switch to devm iio register.
>>>>> Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
>>>> So better leave it out:
>>>> iio_device_unregister(indio_dev) will disable the buffers and through
>>>> ops disables the sensor and than remove iio dev ptr from the internal table.
>>>>
>>>
>>> Sorry for the late reply. Yes, I guess I missed the point that
>>> 'ssp_register_consumer' is
>>> used in probe function. And I believe that devm_iio_register is useful
>>> only when we
>>> can convert all other functions to their devm counterparts and remove
>>> function will go
>>> away.
>> Yes. Exactly.
>>>
>>> But then why don't we need ssp_deregister_consumer here in the remove function?
>>> Is it automatically handled by iio_device_unregister? I guess Karol
>>> tried to explain
>>> the same thing but I am still confused. Same case applies for
>>> ssp_sensors/ssp_dev.c.
>> We do indeed need an ssp_deregister_consumer function to be called in the remove.
>> I don't think one currently exists, so that needs fixing.
>
> Ok. Then I'll send patches for both of these files.
Sorry, probably I was not clear enough in my last mail. I mean I'll
send patches patches
once we will have something like 'ssp_deregister_consumer'. But is
there anyone who
is working on this? Is it possible to introduce devm counterpart of the same?
How much will it be useful [taking note that there are only 3-4 files
which are using it]?
>>>>>>
>>>>>> Also the same can (rather should) be done for accelerometer sensor
>>>>>> (ssp_accel_sensor.c).
>>>>>>
>>>>>> Vaishali, if you want please feel free and send patch.
>>>>>>
>>>>>>>
>>>>>>> Now I suspect that case doesn't actually occur because the relevant
>>>>>>> device elements are disabled whenever this module is removed. Having
>>>>>>> said that we might expect an ssp_unregister_consumer function that
>>>>>>> sets the relevant pointer back to null on removal so as to avoid
>>>>>>> any possible race conditions around driver removal / reprobing.
>>>>>>> A spot of defensive programming rather than necessarily a bug to be
>>>>>>> fixed!
>>>>>>>
>>>>>>> One little process thing. This driver was written by Karol so patches
>>>>>>> should probably always cc Karol as well as the more general
>>>>>>> maintainer / reviewers for IIO. Added cc.
>>>>>>>
>>>>>>> Jonathan
>>>>>>>> ---
>>>>>>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>>>>>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>> b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>>> index 0a8afdd..ac88de7 100644
>>>>>>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>>>>>> *pdev)
>>>>>>>>
>>>>>>>> platform_set_drvdata(pdev, indio_dev);
>>>>>>>>
>>>>>>>> - ret = iio_device_register(indio_dev);
>>>>>>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>>>>>>> if (ret < 0)
>>>>>>>> return ret;
>>>>>>>>
>>>>>>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>>>>>> platform_device *pdev)
>>>>>>>> return 0;
>>>>>>>> }
>>>>>>>>
>>>>>>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>>>>>>> -{
>>>>>>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>>>>>>> -
>>>>>>>> - iio_device_unregister(indio_dev);
>>>>>>>> -
>>>>>>>> - return 0;
>>>>>>>> -}
>>>>>>>> -
>>>>>>>> static struct platform_driver ssp_gyro_driver = {
>>>>>>>> .driver = {
>>>>>>>> .name = SSP_GYROSCOPE_NAME,
>>>>>>>> },
>>>>>>>> .probe = ssp_gyro_probe,
>>>>>>>> - .remove = ssp_gyro_remove,
>>>>>>>> };
>>>>>>>>
>>>>>>>> module_platform_driver(ssp_gyro_driver);
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>>>>>> in
>>>>>>> the body of a message to majordomo@vger.kernel.org
>>>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>
>
>
> --
> Vaishali
--
Vaishali
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register
2015-09-28 10:08 ` Vaishali Thakkar
@ 2015-09-29 10:25 ` Karol Wrona
0 siblings, 0 replies; 10+ messages in thread
From: Karol Wrona @ 2015-09-29 10:25 UTC (permalink / raw)
To: Vaishali Thakkar, Jonathan Cameron
Cc: Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
Peter Meerwald, linux-iio, Linux Kernel Mailing List
On 09/28/2015 12:08 PM, Vaishali Thakkar wrote:
> On Mon, Sep 28, 2015 at 6:42 AM, Vaishali Thakkar
> <vthakkar1994@gmail.com> wrote:
>> On Sun, Sep 27, 2015 at 7:01 PM, Jonathan Cameron <jic23@kernel.org> wrote:
>>> On 27/09/15 05:16, Vaishali Thakkar wrote:
>>>> On Mon, Sep 21, 2015 at 4:48 PM, Karol Wrona <k.wrona@samsung.com> wrote:
>>>>> On 09/21/2015 11:53 AM, Jonathan Cameron wrote:
>>>>>>
>>>>>>
>>>>>> On 21 September 2015 09:18:39 BST, Karol Wrona <k.wrona@samsung.com> wrote:
>>>>>>> On 09/20/2015 09:18 PM, Jonathan Cameron wrote:
>>>>>>>> On 14/09/15 17:08, Vaishali Thakkar wrote:
>>>>>>>>> Use resourced managed function devm_iio_device_register to
>>>>>>>>> make error path simpler. To be compatible with the change,
>>>>>>>>> the remove function is removed as it is now redundant.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>>>>>>>> This patch is reasonable, but makes me wonder if there is an issue
>>>>>>>> in the remove path for this driver. It relies on the ssp_sensors
>>>>>>> common
>>>>>>>> module. That in ssp_spi.c uses the fact ssp_register_consumer
>>>>>>>> has saved the struct iio_dev into a local array in the core driver.
>>>>>>>> I think this means that a remove of this function will leave a
>>>>>>> possible
>>>>>>>> null pointer de reference.
>>>>>>> You are right. In this case we need something like
>>>>>>> ssp_deregister_consumer(...) in ssp_dev.c. So I think that "remove
>>>>>>> func"
>>>>>>> should stay. Of course we can switch to devm iio register.
>>>>>> Not if you want to remove the userspace interface before doing you new function call. Doing so gives a nasty race.
>>>>> So better leave it out:
>>>>> iio_device_unregister(indio_dev) will disable the buffers and through
>>>>> ops disables the sensor and than remove iio dev ptr from the internal table.
>>>>>
>>>>
>>>> Sorry for the late reply. Yes, I guess I missed the point that
>>>> 'ssp_register_consumer' is
>>>> used in probe function. And I believe that devm_iio_register is useful
>>>> only when we
>>>> can convert all other functions to their devm counterparts and remove
>>>> function will go
>>>> away.
>>> Yes. Exactly.
>>>>
>>>> But then why don't we need ssp_deregister_consumer here in the remove function?
>>>> Is it automatically handled by iio_device_unregister? I guess Karol
>>>> tried to explain
>>>> the same thing but I am still confused. Same case applies for
>>>> ssp_sensors/ssp_dev.c.
>>> We do indeed need an ssp_deregister_consumer function to be called in the remove.
>>> I don't think one currently exists, so that needs fixing.
>>
>> Ok. Then I'll send patches for both of these files.
>
> Sorry, probably I was not clear enough in my last mail. I mean I'll
> send patches patches
> once we will have something like 'ssp_deregister_consumer'. But is
> there anyone who
> is working on this? Is it possible to introduce devm counterpart of the same?
If you want you can simply add ssp_deregister_consumer (to ssp_dev.c)
function and use it in the remove (in ssp sensor platform driver). I
will test it.
We can use devm_iio_device_register for iio dev itself but better check
what is called first - driver remove callback or the devm removes.
If we deregister internally the iio device from ssp we should be quite safe.
> How much will it be useful [taking note that there are only 3-4 files
> which are using it]?
>
>>>>>>>
>>>>>>> Also the same can (rather should) be done for accelerometer sensor
>>>>>>> (ssp_accel_sensor.c).
>>>>>>>
>>>>>>> Vaishali, if you want please feel free and send patch.
>>>>>>>
>>>>>>>>
>>>>>>>> Now I suspect that case doesn't actually occur because the relevant
>>>>>>>> device elements are disabled whenever this module is removed. Having
>>>>>>>> said that we might expect an ssp_unregister_consumer function that
>>>>>>>> sets the relevant pointer back to null on removal so as to avoid
>>>>>>>> any possible race conditions around driver removal / reprobing.
>>>>>>>> A spot of defensive programming rather than necessarily a bug to be
>>>>>>>> fixed!
>>>>>>>>
>>>>>>>> One little process thing. This driver was written by Karol so patches
>>>>>>>> should probably always cc Karol as well as the more general
>>>>>>>> maintainer / reviewers for IIO. Added cc.
>>>>>>>>
>>>>>>>> Jonathan
>>>>>>>>> ---
>>>>>>>>> drivers/iio/gyro/ssp_gyro_sensor.c | 12 +-----------
>>>>>>>>> 1 file changed, 1 insertion(+), 11 deletions(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>> b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>>>> index 0a8afdd..ac88de7 100644
>>>>>>>>> --- a/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>>>> +++ b/drivers/iio/gyro/ssp_gyro_sensor.c
>>>>>>>>> @@ -134,7 +134,7 @@ static int ssp_gyro_probe(struct platform_device
>>>>>>> *pdev)
>>>>>>>>>
>>>>>>>>> platform_set_drvdata(pdev, indio_dev);
>>>>>>>>>
>>>>>>>>> - ret = iio_device_register(indio_dev);
>>>>>>>>> + ret = devm_iio_device_register(&pdev->dev, indio_dev);
>>>>>>>>> if (ret < 0)
>>>>>>>>> return ret;
>>>>>>>>>
>>>>>>>>> @@ -144,21 +144,11 @@ static int ssp_gyro_probe(struct
>>>>>>> platform_device *pdev)
>>>>>>>>> return 0;
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> -static int ssp_gyro_remove(struct platform_device *pdev)
>>>>>>>>> -{
>>>>>>>>> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>>>>>>>>> -
>>>>>>>>> - iio_device_unregister(indio_dev);
>>>>>>>>> -
>>>>>>>>> - return 0;
>>>>>>>>> -}
>>>>>>>>> -
>>>>>>>>> static struct platform_driver ssp_gyro_driver = {
>>>>>>>>> .driver = {
>>>>>>>>> .name = SSP_GYROSCOPE_NAME,
>>>>>>>>> },
>>>>>>>>> .probe = ssp_gyro_probe,
>>>>>>>>> - .remove = ssp_gyro_remove,
>>>>>>>>> };
>>>>>>>>>
>>>>>>>>> module_platform_driver(ssp_gyro_driver);
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>>>>>>> in
>>>>>>>> the body of a message to majordomo@vger.kernel.org
>>>>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>>
>> --
>> Vaishali
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-09-29 10:25 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-14 16:08 [PATCH] iio: gyro: ssp_gyro_sensor: Use devm_iio_device_register Vaishali Thakkar
2015-09-20 19:18 ` Jonathan Cameron
2015-09-21 8:18 ` Karol Wrona
2015-09-21 9:53 ` Jonathan Cameron
2015-09-21 11:18 ` Karol Wrona
2015-09-27 4:16 ` Vaishali Thakkar
2015-09-27 13:31 ` Jonathan Cameron
2015-09-28 1:12 ` Vaishali Thakkar
2015-09-28 10:08 ` Vaishali Thakkar
2015-09-29 10:25 ` Karol Wrona
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).