Messages in this thread | | | Date | Mon, 14 Feb 2011 18:34:05 -0500 | From | Mathieu Desnoyers <> | Subject | Re: [PATCH 0/2] jump label: 2.6.38 updates |
| |
* David Miller (davem@davemloft.net) wrote: > From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> > Date: Mon, 14 Feb 2011 18:03:01 -0500 > > > If this is true, then we have bugs in lots of xchg/cmpxchg users (which > > do not reside in atomic.h), e.g.: > > > > fs/fs_struct.c: > > int current_umask(void) > > { > > return current->fs->umask; > > } > > EXPORT_SYMBOL(current_umask); > > > > kernel/sys.c: > > SYSCALL_DEFINE1(umask, int, mask) > > { > > mask = xchg(¤t->fs->umask, mask & S_IRWXUGO); > > return mask; > > } > > > > The solution to this would be to force all xchg/cmpxchg users to swap to > > atomic.h variables, which would force the ll semantic on read. But I'd > > really like to see where this is documented first -- or which PowerPC > > engineer we should talk to. > > We can't wholesale to atomic_t because we do this on variables of > all sizes, not just 32-bit ones. > > We do them on pointers in the networking for example.
We have atomic_long_t for this, but yeah, it would kind of suck to have to create
union { atomic_long_t atomic; void *ptr; }
all around the place. Let's see if we can get to know which PowerPC processor family all this fuss is about, and where this rumour originates from.
Thanks,
Mathieu
-- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com
| |