diff mbox

powerpc: Fix mpic_resume on early G5 macs

Message ID AANLkTimrq40Pd-ulPkfb8T2LJ0NSybd5InviirU7fK5D@mail.gmail.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Alastair Bridgewater June 13, 2010, 1:36 a.m. UTC
mpic_resume() on G5 macs blindly dereferences mpic->fixups, but
it may legitimately be NULL (as on PowerMac7,2).  Add an explicit
check.

This fixes suspend-to-disk with one processor (maxcpus=1) for me.

Signed-off-by: Alastair Bridgewater <alastair.bridgewater@gmail.com>
---

Comments

Benjamin Herrenschmidt June 15, 2010, 5:04 a.m. UTC | #1
On Sat, 2010-06-12 at 21:36 -0400, Alastair Bridgewater wrote:
> mpic_resume() on G5 macs blindly dereferences mpic->fixups, but
> it may legitimately be NULL (as on PowerMac7,2).  Add an explicit
> check.
> 
> This fixes susend-to-disk with one processor (maxcpus=1) for me.

Thanks. Patch is terribly mangled tho (word wrapped and tabs have been
replaced with spaces). I fixed it up manually but check your email setup
next time.

Cheers,
Ben.

> Signed-off-by: Alastair Bridgewater <alastair.bridgewater@gmail.com>
> ---
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index 4fd57ab..28668ba 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -1666,7 +1666,7 @@ static int mpic_resume(struct sys_device *dev)
>                                mpic->save_data[i].dest);
> 
>  #ifdef CONFIG_MPIC_U3_HT_IRQS
> -       {
> +       if (mpic->fixups) {
>                 struct mpic_irq_fixup *fixup = &mpic->fixups[i];
> 
>                 if (fixup->base) {
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
diff mbox

Patch

diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 4fd57ab..28668ba 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1666,7 +1666,7 @@  static int mpic_resume(struct sys_device *dev)
                               mpic->save_data[i].dest);

 #ifdef CONFIG_MPIC_U3_HT_IRQS
-       {
+       if (mpic->fixups) {
                struct mpic_irq_fixup *fixup = &mpic->fixups[i];

                if (fixup->base) {