mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
base/node.c: initialize the accessor list before registering
The current code registers the node as available in the node array
before initializing the accessor list. This makes it so that
anything which might access the accessor list as a result of
allocations will cause an undefined memory access.
In one example, an extension to access hmat data during interleave
caused this undefined access as a result of a bulk allocation
that occurs during node initialization but before the accessor
list is initialized.
Initialize the accessor list before making the node generally
available to the global system.
Fixes: 08d9dbe72b ("node: Link memory nodes to their compute nodes")
Signed-off-by: Gregory Price <gregory.price@memverge.com>
Link: https://lore.kernel.org/r/20231030044239.971756-1-gregory.price@memverge.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5bb03d0dd7
commit
48b5928e18
@@ -868,11 +868,15 @@ int __register_one_node(int nid)
|
||||
{
|
||||
int error;
|
||||
int cpu;
|
||||
struct node *node;
|
||||
|
||||
node_devices[nid] = kzalloc(sizeof(struct node), GFP_KERNEL);
|
||||
if (!node_devices[nid])
|
||||
node = kzalloc(sizeof(struct node), GFP_KERNEL);
|
||||
if (!node)
|
||||
return -ENOMEM;
|
||||
|
||||
INIT_LIST_HEAD(&node->access_list);
|
||||
node_devices[nid] = node;
|
||||
|
||||
error = register_node(node_devices[nid], nid);
|
||||
|
||||
/* link cpu under this node */
|
||||
@@ -881,7 +885,6 @@ int __register_one_node(int nid)
|
||||
register_cpu_under_node(cpu, nid);
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&node_devices[nid]->access_list);
|
||||
node_init_caches(nid);
|
||||
|
||||
return error;
|
||||
|
||||
Reference in New Issue
Block a user