lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120501001238.GA15497@bloggs.ozlabs.ibm.com>
Date:	Tue, 1 May 2012 10:12:38 +1000
From:	Paul Mackerras <paulus@...ba.org>
To:	linux-kernel@...r.kernel.org
Cc:	Rusty Russell <rusty@...tcorp.com.au>
Subject: get/put_online_cpus documentation wrong?

In Documentation/cpu-hotplug.txt it says:

"	#include <linux/cpu.h>
	get_online_cpus() and put_online_cpus():

The above calls are used to inhibit cpu hotplug operations. While the
cpu_hotplug.refcount is non zero, the cpu_online_mask will not change.
If you merely need to avoid cpus going away, you could also use
preempt_disable() and preempt_enable() for those sections.
Just remember the critical section cannot call any
function that can sleep or schedule this process away."

That last statement doesn't seem like it can be correct, given that
get_online_cpus and put_online_cpus both do a mutex_lock(), which can
sleep.  So, is that statement still correct?  What would happen if a
process did sleep after doing get_online_cpus()?

Also, get/put_online_cpus doing mutex_lock() implies that one should
not call them in atomic context, e.g. while holding a spinlock, which
could usefully be mentioned in cpu-hotplug.txt.

I'm happy to do a patch to update cpu-hotplug.txt once it's clear what
the actual constraints are.

Paul.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ