Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1561248 > unrolled thread
| Started by | Alison Schofield <amsfield22@gmail.com> |
|---|---|
| First post | 2017-01-18 04:10 +0100 |
| Last post | 2017-01-19 00:20 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] iio: trigger: free trigger resource correctly Alison Schofield <amsfield22@gmail.com> - 2017-01-18 04:10 +0100
Re: [PATCH] iio: trigger: free trigger resource correctly Dan Carpenter <dan.carpenter@oracle.com> - 2017-01-18 11:10 +0100
Re: [PATCH] iio: trigger: free trigger resource correctly Alison Schofield <amsfield22@gmail.com> - 2017-01-19 00:20 +0100
| From | Alison Schofield <amsfield22@gmail.com> |
|---|---|
| Date | 2017-01-18 04:10 +0100 |
| Subject | [PATCH] iio: trigger: free trigger resource correctly |
| Message-ID | <t0ONj-70P-3@gated-at.bofh.it> |
Using iio_trigger_put() to free a trigger leads to release of a resource we never held. Replace with iio_trigger_free(). Signed-off-by: Alison Schofield <amsfield22@gmail.com> --- Patches to use devm_* funcs are ready to follow this for the interrupt & bfin-timer triggers. drivers/iio/trigger/iio-trig-interrupt.c | 4 ++-- drivers/iio/trigger/iio-trig-sysfs.c | 2 +- drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c index 572bc6f..b18e50d 100644 --- a/drivers/iio/trigger/iio-trig-interrupt.c +++ b/drivers/iio/trigger/iio-trig-interrupt.c @@ -84,7 +84,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev) error_free_trig_info: kfree(trig_info); error_put_trigger: - iio_trigger_put(trig); + iio_trigger_free(trig); error_ret: return ret; } @@ -99,7 +99,7 @@ static int iio_interrupt_trigger_remove(struct platform_device *pdev) iio_trigger_unregister(trig); free_irq(trig_info->irq, trig); kfree(trig_info); - iio_trigger_put(trig); + iio_trigger_free(trig); return 0; } diff --git a/drivers/iio/trigger/iio-trig-sysfs.c b/drivers/iio/trigger/iio-trig-sysfs.c index 3dfab2b..202e8b8 100644 --- a/drivers/iio/trigger/iio-trig-sysfs.c +++ b/drivers/iio/trigger/iio-trig-sysfs.c @@ -174,7 +174,7 @@ static int iio_sysfs_trigger_probe(int id) return 0; out2: - iio_trigger_put(t->trig); + iio_trigger_free(t->trig); free_t: kfree(t); out1: diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c index 9658f20..4e0b4ee 100644 --- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c +++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c @@ -260,7 +260,7 @@ static int iio_bfin_tmr_trigger_probe(struct platform_device *pdev) out1: iio_trigger_unregister(st->trig); out: - iio_trigger_put(st->trig); + iio_trigger_free(st->trig); return ret; } @@ -273,7 +273,7 @@ static int iio_bfin_tmr_trigger_remove(struct platform_device *pdev) peripheral_free(st->t->pin); free_irq(st->irq, st); iio_trigger_unregister(st->trig); - iio_trigger_put(st->trig); + iio_trigger_free(st->trig); return 0; } -- 2.1.4
[toc] | [next] | [standalone]
| From | Dan Carpenter <dan.carpenter@oracle.com> |
|---|---|
| Date | 2017-01-18 11:10 +0100 |
| Message-ID | <t0VlN-2Ex-25@gated-at.bofh.it> |
| In reply to | #1561248 |
On Tue, Jan 17, 2017 at 07:00:28PM -0800, Alison Schofield wrote: > Using iio_trigger_put() to free a trigger leads to release of > a resource we never held. Replace with iio_trigger_free(). They're basically the same except iio_trigger_put() puts the module and the device and free only puts the device. I've looked at this briefly, but I can't figure out how iio_trigger_get/ iio_trigger_put is supposed to be used. There isn't any documentation. I'm trying to review this code, but I can't figure out where we *are* supposed to be doing the put. For example, iio_device_unregister_trigger_consumer() takes a put, but iio_device_register_trigger_consumer() doesn't do a get... It's all very confusing. You seem like you know what's going on. Can we get some documentation? > > Signed-off-by: Alison Schofield <amsfield22@gmail.com> > --- > Patches to use devm_* funcs are ready to follow this for > the interrupt & bfin-timer triggers. > > drivers/iio/trigger/iio-trig-interrupt.c | 4 ++-- > drivers/iio/trigger/iio-trig-sysfs.c | 2 +- > drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 4 ++-- > 3 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c > index 572bc6f..b18e50d 100644 > --- a/drivers/iio/trigger/iio-trig-interrupt.c > +++ b/drivers/iio/trigger/iio-trig-interrupt.c > @@ -84,7 +84,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev) > error_free_trig_info: > kfree(trig_info); > error_put_trigger: > - iio_trigger_put(trig); > + iio_trigger_free(trig); We could rename this label. regards, dan carpenter
[toc] | [prev] | [next] | [standalone]
| From | Alison Schofield <amsfield22@gmail.com> |
|---|---|
| Date | 2017-01-19 00:20 +0100 |
| Message-ID | <t17Gh-22Z-1@gated-at.bofh.it> |
| In reply to | #1561436 |
On Wed, Jan 18, 2017 at 12:56:29PM +0300, Dan Carpenter wrote: > On Tue, Jan 17, 2017 at 07:00:28PM -0800, Alison Schofield wrote: > > Using iio_trigger_put() to free a trigger leads to release of > > a resource we never held. Replace with iio_trigger_free(). > > They're basically the same except iio_trigger_put() puts the module and > the device and free only puts the device. > > I've looked at this briefly, but I can't figure out how iio_trigger_get/ > iio_trigger_put is supposed to be used. There isn't any documentation. > I'm trying to review this code, but I can't figure out where we *are* > supposed to be doing the put. > > For example, iio_device_unregister_trigger_consumer() takes a put, but > iio_device_register_trigger_consumer() doesn't do a get... It's all > very confusing. > > You seem like you know what's going on. Can we get some documentation? > Dan, Although I'm comfortable within the bounds of this fix (pair the alloc & free's and do not _put the module resource we never _get'd) beyond that, not so much. I'm just figuring it out myself. linux-iio experts...pointers, help? alisons > > > > Signed-off-by: Alison Schofield <amsfield22@gmail.com> > > --- > > Patches to use devm_* funcs are ready to follow this for > > the interrupt & bfin-timer triggers. > > > > drivers/iio/trigger/iio-trig-interrupt.c | 4 ++-- > > drivers/iio/trigger/iio-trig-sysfs.c | 2 +- > > drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 4 ++-- > > 3 files changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c > > index 572bc6f..b18e50d 100644 > > --- a/drivers/iio/trigger/iio-trig-interrupt.c > > +++ b/drivers/iio/trigger/iio-trig-interrupt.c > > @@ -84,7 +84,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev) > > error_free_trig_info: > > kfree(trig_info); > > error_put_trigger: > > - iio_trigger_put(trig); > > + iio_trigger_free(trig); > > > We could rename this label. > > regards, > dan carpenter >
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web