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.

> 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.

cheers
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to