* [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).