linux/drivers/misc
Vlastimil Babka 96db800f5d mm: rename alloc_pages_exact_node() to __alloc_pages_node()
alloc_pages_exact_node() was introduced in commit 6484eb3e2a ("page
allocator: do not check NUMA node ID when the caller knows the node is
valid") as an optimized variant of alloc_pages_node(), that doesn't
fallback to current node for nid == NUMA_NO_NODE.  Unfortunately the
name of the function can easily suggest that the allocation is
restricted to the given node and fails otherwise.  In truth, the node is
only preferred, unless __GFP_THISNODE is passed among the gfp flags.

The misleading name has lead to mistakes in the past, see for example
commits 5265047ac3 ("mm, thp: really limit transparent hugepage
allocation to local node") and b360edb43f ("mm, mempolicy:
migrate_to_node should only migrate to node").

Another issue with the name is that there's a family of
alloc_pages_exact*() functions where 'exact' means exact size (instead
of page order), which leads to more confusion.

To prevent further mistakes, this patch effectively renames
alloc_pages_exact_node() to __alloc_pages_node() to better convey that
it's an optimized variant of alloc_pages_node() not intended for general
usage.  Both functions get described in comments.

It has been also considered to really provide a convenience function for
allocations restricted to a node, but the major opinion seems to be that
__GFP_THISNODE already provides that functionality and we shouldn't
duplicate the API needlessly.  The number of users would be small
anyway.

Existing callers of alloc_pages_exact_node() are simply converted to
call __alloc_pages_node(), with the exception of sba_alloc_coherent()
which open-codes the check for NUMA_NO_NODE, so it is converted to use
alloc_pages_node() instead.  This means it no longer performs some
VM_BUG_ON checks, and since the current check for nid in
alloc_pages_node() uses a 'nid < 0' comparison (which includes
NUMA_NO_NODE), it may hide wrong values which would be previously
exposed.

Both differences will be rectified by the next patch.

To sum up, this patch makes no functional changes, except temporarily
hiding potentially buggy callers.  Restricting the checks in
alloc_pages_node() is left for the next patch which can in turn expose
more existing buggy callers.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Robin Holt <robinmholt@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Christoph Lameter <cl@linux.com>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Cc: Mel Gorman <mgorman@suse.de>
Cc: David Rientjes <rientjes@google.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Gleb Natapov <gleb@kernel.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Cliff Whickman <cpw@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-09-08 15:35:28 -07:00
..
altera-stapl drivers/misc/altera-stapl/altera.c: remove extraneous KERN_INFO prefix 2015-06-25 17:00:38 -07:00
c2port
cb710
cxl powerpc updates for 4.3 2015-09-03 16:41:38 -07:00
echo staging: echo: move to drivers/misc/ 2014-02-28 14:08:42 -08:00
eeprom Merge 4.2-rc6 into char-misc-next 2015-08-09 16:28:09 -07:00
genwqe GenWQE: remove unnecessary version.h inclusion 2015-01-12 05:04:11 -08:00
ibmasm
lis3lv02d misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
mei mei: remove check on pm_runtime_active in __mei_cl_disconnect 2015-08-04 21:58:47 -07:00
mic misc: mic: scif bug fix for vmalloc_to_page crash 2015-07-22 21:25:36 -07:00
sgi-gru Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-03 15:48:23 -07:00
sgi-xp mm: rename alloc_pages_exact_node() to __alloc_pages_node() 2015-09-08 15:35:28 -07:00
ti-st ti-st: st_kim: use gpio_set_value_cansleep to fix warning 2015-08-05 13:24:36 -07:00
vmw_vmci char: make misc_deregister a void function 2015-08-05 10:35:49 -07:00
ad525x_dpot-i2c.c misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
ad525x_dpot-spi.c ad525x_dpot-spi: Added Blank lines after declarations 2015-01-12 05:04:12 -08:00
ad525x_dpot.c ad525x_dpot:Remove break after return 2015-01-12 05:04:12 -08:00
ad525x_dpot.h
apds990x.c misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
apds9802als.c drivers/misc: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
arm-charlcd.c misc: drop owner assignment from platform_drivers 2014-10-20 16:20:54 +02:00
atmel_tclib.c ARM: at91/tclib: mask interruptions at shutdown and probe 2014-09-08 10:54:03 +02:00
atmel-ssc.c Char/Misc driver patches for 3.19-rc1 2014-12-14 16:43:47 -08:00
bh1770glc.c misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
bh1780gli.c misc: bh1780: Add module aliases 2015-03-16 21:10:28 +01:00
bmp085-i2c.c misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
bmp085-spi.c misc: bmp085: Clean up and enable use of interrupt for completion. 2013-12-04 20:23:51 -08:00
bmp085.c drivers/misc: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
bmp085.h misc: bmp085: Clean up and enable use of interrupt for completion. 2013-12-04 20:23:51 -08:00
cs5535-mfgpt.c misc: drop owner assignment from platform_drivers 2014-10-20 16:20:54 +02:00
ds1682.c misc: ds1682: clean up ds1682_eeprom_read() and ds1682_eeprom_write() 2015-08-05 13:53:39 -07:00
dummy-irq.c Add MODULE_DESCRIPTION to dummy-irq.c and lkdtm.c in drivers/misc 2014-07-09 14:19:34 -07:00
enclosure.c enclosure: fix WARN_ON removing an adapter in multi-path devices 2015-03-31 08:53:36 +03:00
fsa9480.c treewide: fix comments and printk msgs 2014-01-07 15:06:07 +01:00
hmc6352.c drivers/misc: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
hpilo.c
hpilo.h
ics932s401.c
ioc4.c misc: ioc4: simplify wave period measurement in clock_calibrate 2015-01-12 05:04:11 -08:00
isl29003.c misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
isl29020.c drivers/misc: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
Kconfig ARM: qcom: Add coincell charger driver 2015-07-29 13:37:18 -07:00
kgdbts.c clone: support passing tls argument via C rather than pt_regs magic 2015-06-25 17:00:38 -07:00
lattice-ecp3-config.c misc: lattice-ecp3-config: Add missing MODULE_FIRMWARE() 2014-09-23 23:04:17 -07:00
lkdtm.c Add MODULE_DESCRIPTION to dummy-irq.c and lkdtm.c in drivers/misc 2014-07-09 14:19:34 -07:00
Makefile ARM: qcom: Add coincell charger driver 2015-07-29 13:37:18 -07:00
pch_phub.c pch_phub: Build context save/restore only for PM 2014-11-07 10:28:36 -08:00
phantom.c
pti.c
qcom-coincell.c ARM: qcom: Add coincell charger driver 2015-07-29 13:37:18 -07:00
spear13xx_pcie_gadget.c Pratyush Anand has moved 2015-06-25 17:00:38 -07:00
sram.c genalloc: add name arg to gen_pool_get() and devm_gen_pool_create() 2015-09-04 16:54:41 -07:00
ti_dac7512.c drivers/misc: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
tifm_7xx1.c misc: tifm: match return type of wait_for_completion_timeout 2015-03-25 11:36:38 +01:00
tifm_core.c
tsl2550.c misc: Drop owner assignment from i2c_driver 2015-07-27 10:30:48 -07:00
vexpress-syscfg.c ARM: vexpress: Remove non-DT code 2014-11-28 16:08:16 +01:00
vmw_balloon.c VMware balloon: Add support for balloon capabilities. 2015-08-05 13:17:53 -07:00