Messages in this thread Patch in this message | | | Subject | Re: generic swap() | From | Peter Zijlstra <> | Date | Fri, 16 Jan 2009 10:45:36 +0100 |
| |
On Fri, 2009-01-16 at 01:38 -0800, Andrew Morton wrote: > On Fri, 16 Jan 2009 10:26:34 +0100 Peter Zijlstra <peterz@infradead.org> wrote: > > > Hi, > > > > Where did this patch come from? -- I can't seem to find it on lkml at all.. > > That's a damn good question. I received:
Hehe, one of the mysteries of life then :-)
> > The reason I ask it that I wonder why swap() has a return value? > > Accident, I guess. > > > +#define swap(a, b) ({ typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; }) > > You think it should use the do{}while(0) thing?
That was what I was thinking indeed. Non of the current users appear to make use of the (somewhat arbitrary) return value, so lets change it before someone gets creative ;-)
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> --- diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 343df9e..7fa3718 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -480,7 +480,8 @@ static inline char *pack_hex_byte(char *buf, u8 byte) /* * swap - swap value of @a and @b */ -#define swap(a, b) ({ typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; }) +#define swap(a, b) \ + do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) /** * container_of - cast a member of a structure out to the containing structure
| |