yann@402: Date: Sun, 20 Mar 2005 20:26:02 -0800 yann@402: From: Richard Henderson yann@402: To: Andrew Morton yann@402: Cc: Dan Kegel , jbglaw@lug-owl.de, yann@402: linux-kernel@vger.kernel.org, torvalds@osdl.org yann@402: Subject: Re: 2.6.11.3 build problem in arch/alpha/kernel/srcons.c with gcc-4.0 yann@402: Message-ID: <20050321042602.GA3795@twiddle.net> yann@402: Mail-Followup-To: Andrew Morton , Dan Kegel , yann@402: jbglaw@lug-owl.de, linux-kernel@vger.kernel.org, torvalds@osdl.org yann@402: References: <423E238F.3030805@kegel.com> <20050320190352.65cc1396.akpm@osdl.org> yann@402: Mime-Version: 1.0 yann@402: Content-Type: text/plain; charset=us-ascii yann@402: Content-Disposition: inline yann@402: In-Reply-To: <20050320190352.65cc1396.akpm@osdl.org> yann@402: User-Agent: Mutt/1.4.1i yann@402: yann@402: On Sun, Mar 20, 2005 at 07:03:52PM -0800, Andrew Morton wrote: yann@402: > Dan Kegel wrote: yann@402: > > yann@402: > > Anyone with an alpha care to suggest a fix for this? yann@402: > > yann@402: > > arch/alpha/kernel/srmcons.c: In function 'srmcons_open': yann@402: > > arch/alpha/kernel/srmcons.c:196: warning: 'srmconsp' may be used uninitialized in this function yann@402: > > make[1]: *** [arch/alpha/kernel/srmcons.o] Error 1 yann@402: > > make: *** [arch/alpha/kernel] Error 2 yann@402: > > yann@402: > > I get this when building the 2.6.11.3 kernel with a recent gcc-4.0 snapshot. yann@402: > > yann@402: > yann@402: > It's beyond gcc's ability to figure out that the code is OK. Options would yann@402: > be to disable -Werror, or to artificially initialise that variable. yann@402: yann@402: Fixed thus. yann@402: yann@402: Note that even with a _raw_read_trylock implementation, smp still yann@402: doesn't work. Everything that init spawns dies immediately. I yann@402: havn't had a chance to find out why yet... yann@402: yann@402: [ Note: deleted changes to smp.c, since they didn't apply cleanly yann@402: to 2.6.11.3 (the function had moved, I guess), and they seemed unrelated.] yann@402: yann@402: r~ yann@402: yann@402: yann@402: yann@402: You can import this changeset into BK by piping this whole message to: yann@402: '| bk receive [path to repository]' or apply the patch as usual. yann@402: yann@402: =================================================================== yann@402: yann@402: yann@402: ChangeSet@1.2289, 2005-03-20 12:29:41-08:00, rth@kanga.twiddle.home yann@402: [ALPHA] Elimitate two warnings from gcc4. yann@402: yann@402: yann@402: smp.c | 43 ------------------------------------------- yann@402: srmcons.c | 27 ++++++++++----------------- yann@402: 2 files changed, 10 insertions(+), 60 deletions(-) yann@402: yann@402: yann@402: diff -Nru a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c yann@402: --- a/arch/alpha/kernel/srmcons.c 2005-03-20 20:23:28 -08:00 yann@402: +++ b/arch/alpha/kernel/srmcons.c 2005-03-20 20:23:28 -08:00 yann@402: @@ -164,29 +164,22 @@ yann@402: unsigned long flags; yann@402: int retval = 0; yann@402: yann@402: - spin_lock_irqsave(&srmconsp_lock, flags); yann@402: - yann@402: - do { yann@402: - if (srmconsp != NULL) { yann@402: - *ps = srmconsp; yann@402: - break; yann@402: - } yann@402: + if (srmconsp == NULL) { yann@402: + spin_lock_irqsave(&srmconsp_lock, flags); yann@402: yann@402: srmconsp = kmalloc(sizeof(*srmconsp), GFP_KERNEL); yann@402: - if (srmconsp == NULL) { yann@402: + if (srmconsp == NULL) yann@402: retval = -ENOMEM; yann@402: - break; yann@402: + else { yann@402: + srmconsp->tty = NULL; yann@402: + spin_lock_init(&srmconsp->lock); yann@402: + init_timer(&srmconsp->timer); yann@402: } yann@402: yann@402: - srmconsp->tty = NULL; yann@402: - spin_lock_init(&srmconsp->lock); yann@402: - init_timer(&srmconsp->timer); yann@402: - yann@402: - *ps = srmconsp; yann@402: - } while(0); yann@402: - yann@402: - spin_unlock_irqrestore(&srmconsp_lock, flags); yann@402: + spin_unlock_irqrestore(&srmconsp_lock, flags); yann@402: + } yann@402: yann@402: + *ps = srmconsp; yann@402: return retval; yann@402: } yann@402: yann@402: yann@402: =================================================================== yann@402: yann@402: yann@402: This BitKeeper patch contains the following changesets: yann@402: 1.2289 yann@402: ## Wrapped with gzip_uu ## yann@402: yann@402: yann@402: M'XL( $!,/D( [56[V_;-A#]+/X5!Q38FFV628KZY4XSH8D1KK%-F#@>'J\]^[>V6_@6@LU\919H#?PL=%F yann@402: MXG$E?+,N\[P2OA3&QJ^:QL;'BZ868YLY?O=YS&_;$?4C9$\ON3:P:O]%YY3=J_D^4 yann@402: M$ (\R^')V? yann@402: M@82,8'2Y5Q6-7OA""'.,3AZA:?O>)3BWJA?I3?Z"*G>@#RND49R&PW0_0\O-^RN)C,R\ yann@402: MNCVM2MD9UB_#4'" X8@&$8D?A5+ yann@402: M7(FU*JT1[@J?S869M:I<67/,M%%=9D!W;MTLN(&?6@VE!EZM^4:#>] (Z;O