Subject: Re: [PATCH] Use of_get_next_child() in k2_sata_proc_info()

From: Michael Ellerman <[email-masked]>
Date: Wed, 24 Oct 2007 16:23:29 +1000

On Wed, 2007-10-24 at 02:04 -0400, Jeff Garzik wrote:
> Benjamin Herrenschmidt wrote:
> > On Wed, 2007-10-24 at 14:25 +1000, Michael Ellerman wrote:
> >> k2_sata_proc_info() uses its own hand-rolled loop to check a nodes
> >> children for a property, this is not safe WRT refcounting, so fix it
> >> to use of_get_next_child().
> >>
> >> Signed-off-by: Michael Ellerman <[email-masked]>
> > 
> > Acked-by: Benjamin Herrenschmidt <[email-masked]>
> > 
> > (Pending you test boot it on one of our G5s first !)
> > 
> >> ---
> >>  drivers/ata/sata_svw.c |    5 ++++-
> >>  1 files changed, 4 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c
> >> index 12d613c..64c3812 100644
> >> --- a/drivers/ata/sata_svw.c
> >> +++ b/drivers/ata/sata_svw.c
> >> @@ -289,7 +289,10 @@ static int k2_sata_proc_info(struct Scsi_Host *shost, char *page, char **start,
> >>  
> >>  	/* Match it to a port node */
> >>  	index = (ap == ap->host->ports[0]) ? 0 : 1;
> >> -	for (np = np->child; np != NULL; np = np->sibling) {
> >> +
> >> +	for (np = of_get_next_child(np, NULL);
> >> +	     np != NULL;
> >> +	     np = of_get_next_child(np, np)) {
> >>  		const u32 *reg = of_get_property(np, "reg", NULL);
> 
> This sort of thing I would prefer to ACK (ACK!), and let it go upstream 
> via the powerpc tree.

Sure thing, just ACK (ACK!) (ACK?) it, and I'll pester paulus to merge
it via his tree.

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person