Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Mar 2012 21:49:51 +0200
From:      Dimitry Andric <dim@FreeBSD.org>
To:        Stefan Farfeleder <stefanf@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Scott Long <scottl@FreeBSD.org>, David Xu <davidxu@FreeBSD.org>
Subject:   Re: svn commit: r233700 - head/sys/kern
Message-ID:  <4F760E5F.5030300@FreeBSD.org>
In-Reply-To: <20120330133045.GD1423@mole.fafoe.narf.at>
References:  <201203301257.q2UCvE4l042042@svn.freebsd.org> <20120330133045.GD1423@mole.fafoe.narf.at>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2012-03-30 15:30, Stefan Farfeleder wrote:
> here are a few similar cases.

Hm, what about this one that clang warns about:

   sys/dev/asr/asr.c:2420:57: warning: for loop has empty body [-Wempty-body]
	  for (ha = &Asr_softc_list; *ha; ha = &((*ha)->ha_next));
								 ^
   sys/dev/asr/asr.c:2420:57: note: put the semicolon on a separate line to silence this warning [-Wempty-body]

I'm not sure about it though, the code looks like this:

static int
asr_attach(device_t dev)
{
[...]
         Asr_softc_t              *sc, **ha;
[...]
         LIST_INIT(&(sc->ha_ccb));
         /* Link us into the HA list */
         for (ha = &Asr_softc_list; *ha; ha = &((*ha)->ha_next));
                 *(ha) = sc;

It seems the for loop walks the list until the end, then tacks 'sc' onto
it.

So to 'fix' the warning, and make the meaning more explicit, we should
probably rewrite that fragment as:

         LIST_INIT(&(sc->ha_ccb));
         /* Link us into the HA list */
         for (ha = &Asr_softc_list; *ha; ha = &((*ha)->ha_next))
		;
	*(ha) = sc;

Is this OK?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F760E5F.5030300>