* [PATCH] spi/spi: don't release the spi device twice @ 2010-11-22 13:35 Sebastian Andrzej Siewior [not found] ` <20101122133503.GA25553-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Sebastian Andrzej Siewior @ 2010-11-22 13:35 UTC (permalink / raw) To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, David Brownell While rmmoding pxa2xx_spi I hit: |BUG: unable to handle kernel paging request at 6b6b6b9b |IP: [<c115bf61>] device_del+0x11/0x140 |Call Trace: | [<c115c09b>] ? device_unregister+0xb/0x20 | [<c118fe33>] ? spi_unregister_master+0x93/0xc0 | [<f806c554>] ? pxa2xx_spi_remove+0x84/0xc0 [pxa2xx_spi] According to my debug printks, the loop | dummy = device_for_each_child(master->dev.parent, &master->dev, | __unregister); calls __unregister for all childs of spi devicee (spidev in my case) and the spi device itself. So calling device_unregister() for the device itself leads to trouble. This seems to be comming from 3486008 aka ("spi: free children in spi_unregister_master, not siblings") so therefore I cc stable for v36. Cc: <stable-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> # .36.x Signed-off-by: Sebastian Andrzej Siewior <bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> --- This is on v2.6.37-rc1. Unless this got fixed somewhere else in the meantime it is still there. drivers/spi/spi.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 709c836..3c8ff6f 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -586,7 +586,6 @@ void spi_unregister_master(struct spi_master *master) dummy = device_for_each_child(master->dev.parent, &master->dev, __unregister); - device_unregister(&master->dev); } EXPORT_SYMBOL_GPL(spi_unregister_master); -- 1.7.3.2 ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev ^ permalink raw reply related [flat|nested] 8+ messages in thread
[parent not found: <20101122133503.GA25553-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org>]
* Re: spi/spi: don't release the spi device twice [not found] ` <20101122133503.GA25553-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> @ 2010-11-23 0:43 ` David Lamparter [not found] ` <20101123004301.GA1034746-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: David Lamparter @ 2010-11-23 0:43 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, David Brownell On Mon, Nov 22, 2010 at 01:35:03PM -0000, Sebastian Andrzej Siewior wrote: > According to my debug printks, the loop > > | dummy = device_for_each_child(master->dev.parent, &master->dev, > | __unregister); > > calls __unregister for all childs of spi devicee (spidev in my case) and > the spi device itself. So calling device_unregister() for the device > itself leads to trouble. > This seems to be comming from 3486008 aka ("spi: free children in > spi_unregister_master, not siblings") so therefore I cc stable for v36. This code is the old code, before patch 3486008 which you're citing. 3486008 does: - dummy = device_for_each_child(master->dev.parent, &master->dev, - __unregister); + dummy = device_for_each_child(&master->dev, NULL, __unregister); Considering that this patch is in 2.6.36 (and 36.1), you seem to have mixed up your sources. Please make sure your checkout is current and unbroken... > This is on v2.6.37-rc1. Unless this got fixed somewhere else in the > meantime it is still there. "Mu." > --- a/drivers/spi/spi.c > +++ b/drivers/spi/spi.c > @@ -586,7 +586,6 @@ void spi_unregister_master(struct spi_master *master) > > dummy = device_for_each_child(master->dev.parent, &master->dev, > __unregister); > - device_unregister(&master->dev); > } This patch does, consequently, not apply on 2.6.37-rc, since the code doesn't look like that anymore after 3486008... -David ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20101123004301.GA1034746-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org>]
* Re: spi/spi: don't release the spi device twice [not found] ` <20101123004301.GA1034746-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org> @ 2010-11-23 10:33 ` Sebastian Andrzej Siewior [not found] ` <4CEB985F.90805-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Sebastian Andrzej Siewior @ 2010-11-23 10:33 UTC (permalink / raw) To: David Lamparter Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, David Brownell David Lamparter wrote: > This code is the old code, before patch 3486008 which you're citing. > 3486008 does: > > - dummy = device_for_each_child(master->dev.parent, &master->dev, > - __unregister); > + dummy = device_for_each_child(&master->dev, NULL, __unregister); > > Considering that this patch is in 2.6.36 (and 36.1), you seem to have > mixed up your sources. Please make sure your checkout is current and > unbroken... Hmmm. # git describe --long v2.6.37-rc3-0-g3561d43 After looking at spi_unregister_master() in drivers/spi/spi.c, I see: dummy = device_for_each_child(master->dev.parent, &master->dev, __unregister); device_unregister(&master->dev); } This change got back in by: commit 2b9603a0d7e395fb844af90fba71448bc8019077 Author: Feng Tang <feng.tang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> Date: Mon Aug 2 15:52:15 2010 +0800 spi: enable spi_board_info to be registered after spi_master which is v2.6.37-rc1~2^2~4. So I probably mixed up you with Feng. This thread starts at http://www.mail-archive.com/spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org/msg05437.html >David Sebastian ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <4CEB985F.90805-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>]
* Re: spi/spi: don't release the spi device twice [not found] ` <4CEB985F.90805-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> @ 2010-11-23 14:24 ` Feng Tang 2010-11-23 14:59 ` [PATCH v2] " Sebastian Andrzej Siewior 0 siblings, 1 reply; 8+ messages in thread From: Feng Tang @ 2010-11-23 14:24 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, David Brownell, David Lamparter Hi Sebastian, On Tue, 23 Nov 2010 18:33:03 +0800 Sebastian Andrzej Siewior <bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> wrote: > David Lamparter wrote: > > This code is the old code, before patch 3486008 which you're citing. > > 3486008 does: > > > > - dummy = device_for_each_child(master->dev.parent, > > &master->dev, > > - __unregister); > > + dummy = device_for_each_child(&master->dev, NULL, > > __unregister); > > > > Considering that this patch is in 2.6.36 (and 36.1), you seem to > > have mixed up your sources. Please make sure your checkout is > > current and unbroken... > Hmmm. > # git describe --long > v2.6.37-rc3-0-g3561d43 > > After looking at spi_unregister_master() in drivers/spi/spi.c, I see: > > dummy = device_for_each_child(master->dev.parent, &master->dev, > __unregister); > device_unregister(&master->dev); > } > > This change got back in by: > > commit 2b9603a0d7e395fb844af90fba71448bc8019077 > Author: Feng Tang <feng.tang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > Date: Mon Aug 2 15:52:15 2010 +0800 > > spi: enable spi_board_info to be registered after spi_master > > which is v2.6.37-rc1~2^2~4. So I probably mixed up you with Feng. > > This thread starts at > http://www.mail-archive.com/spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org/msg05437.html > I checked my original patch which didn't touch the logic of spi_unregister_master() as ----------------------------------------- @@ -568,6 +592,10 @@ void spi_unregister_master(struct spi_master *master) { int dummy; + mutex_lock(&board_lock); + list_del(&master->list); + mutex_unlock(&board_lock); + dummy = device_for_each_child(master->dev.parent, &master->dev, __unregister); device_unregister(&master->dev); ----------------------------------------- So this should be a merge problem, which corrupt the commit from David's commit 3486008 "spi: free children in spi_unregister_master, not siblings" Thanks, Feng ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] spi/spi: don't release the spi device twice 2010-11-23 14:24 ` Feng Tang @ 2010-11-23 14:59 ` Sebastian Andrzej Siewior [not found] ` <20101123145910.GA23880-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Sebastian Andrzej Siewior @ 2010-11-23 14:59 UTC (permalink / raw) To: Feng Tang Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, David Brownell, David Lamparter This was fixed by David Lamparter in v2.6.36-rc5 3486008 ("spi: free children in spi_unregister_master, not siblings") and broken again in v2.6.37-rc1~2^2~4 during the merge of 2b9603a0 ("spi: enable spi_board_info to be registered after spi_master"). Signed-off-by: Sebastian Andrzej Siewior <bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> --- Okay, Feng. So here is the merge fixup. drivers/spi/spi.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 709c836..b02d0cb 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -584,8 +584,7 @@ void spi_unregister_master(struct spi_master *master) list_del(&master->list); mutex_unlock(&board_lock); - dummy = device_for_each_child(master->dev.parent, &master->dev, - __unregister); + dummy = device_for_each_child(&master->dev, NULL, __unregister); device_unregister(&master->dev); } EXPORT_SYMBOL_GPL(spi_unregister_master); -- 1.7.3.2 ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev ^ permalink raw reply related [flat|nested] 8+ messages in thread
[parent not found: <20101123145910.GA23880-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org>]
* Re: [PATCH v2] spi/spi: don't release the spi device twice [not found] ` <20101123145910.GA23880-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> @ 2010-11-23 16:45 ` David Lamparter [not found] ` <20101123164520.GA1384937-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org> 2010-12-09 16:06 ` [v2] " Sebastian Andrzej Siewior 1 sibling, 1 reply; 8+ messages in thread From: David Lamparter @ 2010-11-23 16:45 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: David Brownell, dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, David Lamparter > This was fixed by David Lamparter in v2.6.36-rc5 3486008 > ("spi: free children in spi_unregister_master, not siblings") and broken > again in v2.6.37-rc1~2^2~4 during the merge of 2b9603a0 ("spi: enable > spi_board_info to be registered after spi_master"). > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> > --- > - dummy = device_for_each_child(master->dev.parent, &master->dev, > - __unregister); > + dummy = device_for_each_child(&master->dev, NULL, __unregister); Signed-off-by: David Lamparter <equinox-cEeocvCgqOOsTnJN9+BGXg@public.gmane.org> very simple merge/rebase/forward-port breakage... Feng, can you check 2b9603a0 for whether anything else got broken? ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20101123164520.GA1384937-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org>]
* Re: [PATCH v2] spi/spi: don't release the spi device twice [not found] ` <20101123164520.GA1384937-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org> @ 2010-11-24 7:59 ` Feng Tang 0 siblings, 0 replies; 8+ messages in thread From: Feng Tang @ 2010-11-24 7:59 UTC (permalink / raw) To: David Lamparter Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Sebastian Andrzej Siewior, David Brownell On Wed, 24 Nov 2010 00:45:20 +0800 David Lamparter <equinox-cEeocvCgqOOsTnJN9+BGXg@public.gmane.org> wrote: > > This was fixed by David Lamparter in v2.6.36-rc5 3486008 > > ("spi: free children in spi_unregister_master, not siblings") and > > broken again in v2.6.37-rc1~2^2~4 during the merge of 2b9603a0 > > ("spi: enable spi_board_info to be registered after spi_master"). > > > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> > > --- > > - dummy = device_for_each_child(master->dev.parent, > > &master->dev, > > - __unregister); > > + dummy = device_for_each_child(&master->dev, NULL, > > __unregister); > > Signed-off-by: David Lamparter <equinox-cEeocvCgqOOsTnJN9+BGXg@public.gmane.org> > > very simple merge/rebase/forward-port breakage... > Feng, can you check 2b9603a0 for whether anything else got broken? > I just checked, all other parts should be ok. Thanks, Feng ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [v2] spi/spi: don't release the spi device twice [not found] ` <20101123145910.GA23880-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> 2010-11-23 16:45 ` David Lamparter @ 2010-12-09 16:06 ` Sebastian Andrzej Siewior 1 sibling, 0 replies; 8+ messages in thread From: Sebastian Andrzej Siewior @ 2010-12-09 16:06 UTC (permalink / raw) To: David Brownell Cc: dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, David Lamparter * Sebastian Andrzej Siewior | 2010-11-23 14:59:10 [-0000]: >This was fixed by David Lamparter in v2.6.36-rc5 3486008 >("spi: free children in spi_unregister_master, not siblings") and broken >again in v2.6.37-rc1~2^2~4 during the merge of 2b9603a0 ("spi: enable >spi_board_info to be registered after spi_master"). > >Signed-off-by: Sebastian Andrzej Siewior <bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> >--- ping > > drivers/spi/spi.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > >diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c >index 709c836..b02d0cb 100644 >--- a/drivers/spi/spi.c >+++ b/drivers/spi/spi.c >@@ -584,8 +584,7 @@ void spi_unregister_master(struct spi_master *master) > list_del(&master->list); > mutex_unlock(&board_lock); > >- dummy = device_for_each_child(master->dev.parent, &master->dev, >- __unregister); >+ dummy = device_for_each_child(&master->dev, NULL, __unregister); > device_unregister(&master->dev); > } > EXPORT_SYMBOL_GPL(spi_unregister_master); ------------------------------------------------------------------------------ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-12-09 16:06 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-11-22 13:35 [PATCH] spi/spi: don't release the spi device twice Sebastian Andrzej Siewior [not found] ` <20101122133503.GA25553-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> 2010-11-23 0:43 ` David Lamparter [not found] ` <20101123004301.GA1034746-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org> 2010-11-23 10:33 ` Sebastian Andrzej Siewior [not found] ` <4CEB985F.90805-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> 2010-11-23 14:24 ` Feng Tang 2010-11-23 14:59 ` [PATCH v2] " Sebastian Andrzej Siewior [not found] ` <20101123145910.GA23880-Hfxr4Dq0UpYb1SvskN2V4Q@public.gmane.org> 2010-11-23 16:45 ` David Lamparter [not found] ` <20101123164520.GA1384937-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org> 2010-11-24 7:59 ` Feng Tang 2010-12-09 16:06 ` [v2] " Sebastian Andrzej Siewior
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).