aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorTony Luck <tony.luck@intel.com>2012-07-26 13:55:26 -0400
committerTony Luck <tony.luck@intel.com>2012-07-26 13:55:26 -0400
commita119365586b0130dfea06457f584953e0ff6481d (patch)
tree174136cc1c832540948356034d2a9d6dee164c72 /drivers/char
parentf9445a382e3b9fdd21db41a4825ca1399cd0a3f4 (diff)
[IA64] Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts
The following build error occured during a ia64 build with swap-over-NFS patches applied. net/core/sock.c:274:36: error: initializer element is not constant net/core/sock.c:274:36: error: (near initialization for 'memalloc_socks') net/core/sock.c:274:36: error: initializer element is not constant This is identical to a parisc build error. Fengguang Wu, Mel Gorman and James Bottomley did all the legwork to track the root cause of the problem. This fix and entire commit log is shamelessly copied from them with one extra detail to change a dubious runtime use of ATOMIC_INIT() to atomic_set() in drivers/char/mspec.c Dave Anglin says: > Here is the line in sock.i: > > struct static_key memalloc_socks = ((struct static_key) { .enabled = > ((atomic_t) { (0) }) }); The above line contains two compound literals. It also uses a designated initializer to initialize the field enabled. A compound literal is not a constant expression. The location of the above statement isn't fully clear, but if a compound literal occurs outside the body of a function, the initializer list must consist of constant expressions. Cc: <stable@vger.kernel.org> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/mspec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c
index 8b78750f1efe..845f97fd1832 100644
--- a/drivers/char/mspec.c
+++ b/drivers/char/mspec.c
@@ -283,7 +283,7 @@ mspec_mmap(struct file *file, struct vm_area_struct *vma,
283 vdata->flags = flags; 283 vdata->flags = flags;
284 vdata->type = type; 284 vdata->type = type;
285 spin_lock_init(&vdata->lock); 285 spin_lock_init(&vdata->lock);
286 vdata->refcnt = ATOMIC_INIT(1); 286 atomic_set(&vdata->refcnt, 1);
287 vma->vm_private_data = vdata; 287 vma->vm_private_data = vdata;
288 288
289 vma->vm_flags |= (VM_IO | VM_RESERVED | VM_PFNMAP | VM_DONTEXPAND); 289 vma->vm_flags |= (VM_IO | VM_RESERVED | VM_PFNMAP | VM_DONTEXPAND);