All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Aaron Durbin <adurbin@google.com>
Cc: linux-kernel@vger.kernel.org, len.brown@intel.com
Subject: Re: [PATCH] acpi: Fix potential call to a freed memory section.
Date: Wed, 16 May 2007 09:33:44 -0700	[thread overview]
Message-ID: <20070516093344.cf0ea55e.akpm@linux-foundation.org> (raw)
In-Reply-To: <20070516160911.GA15066@google.com>

On Wed, 16 May 2007 09:09:11 -0700 Aaron Durbin <adurbin@google.com> wrote:

> Strip __cpuinit[data] from Node <-> PXM routines and supporting data structures.
> Also make pxm_to_node_map and node_to_pxm_map local to the numa acpi module.
> 
> This fixes a bug triggered by the following conditions:
> - boot on a machine with a SLIT table defined
> - kernel is configured w/ CONFIG_HOTPLUG_CPU=n
> - cat /sys/devices/system/node/node*/distance
> This will cause an oops by calling into a freed memory section.
> 
> In particular, on x86_64, __node_distance calls node_to_pxm().
> 

Yeah, those section warnings we get aren't just noise.

I think this patch is also needed in 2.6.21.x, yes?

> ---
> 
> diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
> index 8fcd6a1..a2efae8 100644
> --- a/drivers/acpi/numa.c
> +++ b/drivers/acpi/numa.c
> @@ -40,19 +40,19 @@ #define PXM_INVAL	-1
>  #define NID_INVAL	-1
>  
>  /* maps to convert between proximity domain and logical node ID */
> -int __cpuinitdata pxm_to_node_map[MAX_PXM_DOMAINS]
> +static int pxm_to_node_map[MAX_PXM_DOMAINS]
>  				= { [0 ... MAX_PXM_DOMAINS - 1] = NID_INVAL };
> -int __cpuinitdata node_to_pxm_map[MAX_NUMNODES]
> +static int node_to_pxm_map[MAX_NUMNODES]
>  				= { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };
>  
> -int __cpuinit pxm_to_node(int pxm)
> +int pxm_to_node(int pxm)
>  {
>  	if (pxm < 0)
>  		return NID_INVAL;
>  	return pxm_to_node_map[pxm];
>  }
>  
> -int __cpuinit node_to_pxm(int node)
> +int node_to_pxm(int node)
>  {
>  	if (node < 0)
>  		return PXM_INVAL;
> diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
> index f9d2bde..b62cd36 100644
> --- a/include/acpi/acpi_numa.h
> +++ b/include/acpi/acpi_numa.h
> @@ -11,11 +11,8 @@ #else
>  #define MAX_PXM_DOMAINS (256)	/* Old pxm spec is defined 8 bit */
>  #endif
>  
> -extern int __cpuinitdata pxm_to_node_map[MAX_PXM_DOMAINS];
> -extern int __cpuinitdata node_to_pxm_map[MAX_NUMNODES];
> -
> -extern int __cpuinit pxm_to_node(int);
> -extern int __cpuinit node_to_pxm(int);
> +extern int pxm_to_node(int);
> +extern int node_to_pxm(int);
>  extern int __cpuinit acpi_map_pxm_to_node(int);
>  extern void __cpuinit acpi_unmap_pxm_to_node(int);
>  

Moving from __fooinit into .text is always safe.  Len, do you want me to
merge this up?


  reply	other threads:[~2007-05-16 16:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-16 16:09 [PATCH] acpi: Fix potential call to a freed memory section Aaron Durbin
2007-05-16 16:33 ` Andrew Morton [this message]
2007-05-16 16:38   ` Aaron Durbin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070516093344.cf0ea55e.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=adurbin@google.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.