From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: Gavin Shan <gwshan@linux.vnet.ibm.com>, linuxppc-dev@lists.ozlabs.org
Subject: Re: [1/2] powerpc/mm: Remove duplicated check in do_page_fault()
Date: Tue, 10 May 2016 10:38:51 +1000 [thread overview]
Message-ID: <20160510003851.GA17823@gwshan> (raw)
In-Reply-To: <3r3Hyt6KL9z9t0r@ozlabs.org>
On Mon, May 09, 2016 at 08:03:50PM +1000, Michael Ellerman wrote:
>On Fri, 2016-26-02 at 00:26:25 UTC, Gavin Shan wrote:
>> When the page fault happened in user space, we need check it's
>> caused by stack frame pointer update instruction and update
>> local variable @flag with FAULT_FLAG_USER. Currently, the code
>> has two separate check for the same condition. That's unnecessary.
>>
>> This removes one of the duplicated check. No functinal changes
>> introduced.
>
>It's possible though that store_updates_sp() changes regs, and causes
>user_mode(regs) to change, which would mean the second check is necessary.
>That's not true with the current code, but you should mention that you confirmed
>that in the change log.
>
Thanks for review. Yeah, store_updates_sp() checks the failing instruction
is the one updating stack frame pointer (stdu and the variable). The info
is used to expand the stack later. All of it should have been documented
in the commit log.
>> diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
>> index a67c6d7..935f386 100644
>> --- a/arch/powerpc/mm/fault.c
>> +++ b/arch/powerpc/mm/fault.c
>> @@ -294,11 +294,10 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
>> * can result in fault, which will cause a deadlock when called with
>> * mmap_sem held
>> */
>> - if (user_mode(regs))
>> - store_update_sp = store_updates_sp(regs);
>> -
>> - if (user_mode(regs))
>> + if (user_mode(regs)) {
>> flags |= FAULT_FLAG_USER;
>> + store_update_sp = store_updates_sp(regs);
>> + }
>
>It doesn't really matter in this case, but it would be better to keep the
>ordering of the two statements the same as before.
>
Yep, It should have two checks in order as before here if store_updates_sp()
can alter MSR[PR] bit in future as you explained above :-)
Thanks,
Gavin
>cheers
>
prev parent reply other threads:[~2016-05-10 0:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-26 0:26 [PATCH 1/2] powerpc/mm: Remove duplicated check in do_page_fault() Gavin Shan
2016-02-26 0:26 ` [PATCH 2/2] powerpc/mm: Improve readability of update_mmu_cache() Gavin Shan
2016-05-10 21:48 ` [2/2] " Michael Ellerman
2016-05-09 10:03 ` [1/2] powerpc/mm: Remove duplicated check in do_page_fault() Michael Ellerman
2016-05-10 0:38 ` Gavin Shan [this message]
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=20160510003851.GA17823@gwshan \
--to=gwshan@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).