Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264004AbUDFUxa (ORCPT ); Tue, 6 Apr 2004 16:53:30 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264007AbUDFUxa (ORCPT ); Tue, 6 Apr 2004 16:53:30 -0400 Received: from inti.inf.utfsm.cl ([200.1.21.155]:15322 "EHLO inti.inf.utfsm.cl") by vger.kernel.org with ESMTP id S264004AbUDFUxY (ORCPT ); Tue, 6 Apr 2004 16:53:24 -0400 Message-Id: <200404062053.i36KrC3Y005111@eeyore.valparaiso.cl> To: Geert Uytterhoeven Cc: Linux Kernel Mailing List Subject: Re: {put,get}_user() side effects In-Reply-To: Your message of "Tue, 06 Apr 2004 13:46:41 +0200." X-Mailer: MH-E 7.4.2; nmh 1.0.4; XEmacs 21.4 (patch 14) Date: Tue, 06 Apr 2004 16:53:11 -0400 From: Horst von Brand Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1422 Lines: 28 Geert Uytterhoeven said: > On Tue, 6 Apr 2004, Andi Kleen wrote: > > Geert Uytterhoeven writes: > > > On most (all?) architectures {get,put}_user() has side effects: > > > > > > #define put_user(x,ptr) \ > > > __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr))) > > > > Neither typeof not sizeof are supposed to have side effects. If your > > compiler generates them that's a compiler bug. > From a simple compile test, you seem to be right... Weird, since it does > expand to 3 times 'pIndex++', but pIndex is incremented only once. Better check with a C language lawyer. Maybe gcc gets it wrong, or it is undefined (in which case next gcc could screw you over, and give you a hard time finding out how...). An inline should be safe, and unless gcc still gets them wrong, equally fast/small. -- Dr. Horst H. von Brand User #22616 counter.li.org Departamento de Informatica Fono: +56 32 654431 Universidad Tecnica Federico Santa Maria +56 32 654239 Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/