Thread (27 messages) 27 messages, 11 authors, 2018-11-25

Re: [PATCH v2] Add /proc/pid_gen

From: Daniel Colascione <hidden>
Date: 2018-11-21 22:52:55
Also in: linux-doc, lkml

On Wed, Nov 21, 2018 at 2:49 PM Jann Horn [off-list ref] wrote:
On Wed, Nov 21, 2018 at 11:40 PM Daniel Colascione [off-list ref] wrote:
quoted
On Wed, Nov 21, 2018 at 2:12 PM Andrew Morton [off-list ref] wrote:
quoted
On Wed, 21 Nov 2018 12:54:20 -0800 Daniel Colascione [off-list ref] wrote:
quoted
+u64 read_pid_generation(struct pid_namespace *ns)
+{
+     u64 generation;
+
+
+     spin_lock_irq(&pidmap_lock);
+     generation = ns->generation;
+     spin_unlock_irq(&pidmap_lock);
+     return generation;
+}
What is the spinlocking in here for?  afaict the only purpose it serves
is to make the 64-bit read atomic, so it isn't needed on 32-bit?
ITYM the spinlock is necessary *only* on 32-bit, since 64-bit
architectures have atomic 64-bit reads, and 64-bit reads on 32-bit
architectures can tear. This function isn't a particularly hot path,
so I thought consistency across architectures would be more valuable
than avoiding the lock on some systems.
Linux has atomic64_t/atomic64_read()/atomic64_inc() for this, which
should automatically do the right thing - processor-supported atomic
ops when possible, spinlock otherwise.
I wanted to take advantage of the existing spinlock to synchronize
instead of adding more atomic operations to the rollover path.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help