All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Balbir Singh <bsingharora@gmail.com>, Paul Mackerras <paulus@ozlabs.org>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: Fix BUG_ON() reporting in real mode on powerpc
Date: Wed, 17 Feb 2016 20:46:24 +0530	[thread overview]
Message-ID: <8760xnz7sn.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1455693365.3089.8.camel@gmail.com>

Balbir Singh <bsingharora@gmail.com> writes:

>> It might be a little better to do this:
>>=20
>> 		bugaddr =3D regs->nip;
>> 		if (REGION_ID(bugaddr) =3D=3D 0 && !(regs->msr & MSR_IR))
>> 			bugaddr +=3D PAGE_OFFSET;
>>=20
>> It is possible to execute from addresses with the 0xc000... on top in
>> real mode, because the CPU ignores the top 4 address bits in real
>> mode.
>
> Good catch! Thank you
>
> Changelog:
>      Don't add PAGE_OFFSET blindly, check if REGION_ID is 0
>
> I ran into this issue while debugging an early boot problem.
> The system hit a BUG_ON() but report bug failed to print the
> line number and file name. The reason being that the system
> was running in real mode and report_bug() searches for
> addresses in the PAGE_OFFSET+ region
>
> Suggested-by: Paul Mackerras <paulus@samba.org>
> Signed-off-by: Balbir Singh <bsingharora@gmail.com>
> ---
> =C2=A0arch/powerpc/kernel/traps.c | 7 ++++++-
> =C2=A01 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> index b6becc7..4de4fe7 100644
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -1148,6 +1148,7 @@ void __kprobes program_check_exception(struct pt_re=
gs *regs)
> =C2=A0		goto bail;
> =C2=A0	}
> =C2=A0	if (reason & REASON_TRAP) {
> +		unsigned long bugaddr;
> =C2=A0		/* Debugger is first in line to stop recursive faults in
> =C2=A0		=C2=A0* rcu_lock, notify_die, or atomic_notifier_call_chain */
> =C2=A0		if (debugger_bpt(regs))
> @@ -1158,8 +1159,12 @@ void __kprobes program_check_exception(struct pt_r=
egs *regs)
> =C2=A0				=3D=3D NOTIFY_STOP)
> =C2=A0			goto bail;
> =C2=A0
> +		bugaddr =3D regs->nip;
> +		if ((REGION_ID(bugaddr) =3D=3D 0) && !(regs->msr & MSR_IR))
> +			bugaddr +=3D PAGE_OFFSET;
> +

Can we add some comments around this. When i looked at this first, i was
wondering how nip can be in user region. But then realized that what we
are checking here is kernel address used in real mode. The use of
REGION_ID eventhough simpler is confusing. Hence adding the comment with
details Paul mentioned in email will help.


> =C2=A0		if (!(regs->msr & MSR_PR) &&=C2=A0=C2=A0/* not user-mode */
> -		=C2=A0=C2=A0=C2=A0=C2=A0report_bug(regs->nip, regs) =3D=3D BUG_TRAP_TY=
PE_WARN) {
> +		=C2=A0=C2=A0=C2=A0=C2=A0report_bug(bugaddr, regs) =3D=3D BUG_TRAP_TYPE=
_WARN) {
> =C2=A0			regs->nip +=3D 4;
> =C2=A0			goto bail;
> =C2=A0		}
> --=C2=A0

-aneesh

  parent reply	other threads:[~2016-02-17 15:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-17  4:43 Fix BUG_ON() reporting in real mode on powerpc Balbir Singh
2016-02-17  4:56 ` Paul Mackerras
2016-02-17  7:16   ` Balbir Singh
2016-02-17  8:03     ` Anshuman Khandual
2016-02-17  8:23       ` Paul Mackerras
2016-02-17 15:16     ` Aneesh Kumar K.V [this message]
2016-02-18  0:25       ` Balbir Singh
2016-02-18  2:41         ` Aneesh Kumar K.V

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=8760xnz7sn.fsf@linux.vnet.ibm.com \
    --to=aneesh.kumar@linux.vnet.ibm.com \
    --cc=bsingharora@gmail.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=paulus@ozlabs.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.