[<prev] [next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.21.1807170711580.1693@nanos.tec.linutronix.de>
Date: Tue, 17 Jul 2018 07:12:26 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: jiang.biao2@....com.cn
cc: dave.hansen@...ux.intel.com, mingo@...hat.com, luto@...nel.org,
hpa@...or.com, x86@...nel.org, albcamus@...il.com,
linux-kernel@...r.kernel.org, zhong.weidong@....com.cn
Subject: Re: [PATCH 1/5] x86/pti: check the return value
ofpti_user_pagetable_walk_p4d
On Tue, 17 Jul 2018, jiang.biao2@....com.cn wrote:
> > On 07/15/2018 09:03 PM, Jiang Biao wrote:
> >> diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
> >> index 4d418e7..be9e5bc 100644
> >> --- a/arch/x86/mm/pti.c
> >> +++ b/arch/x86/mm/pti.c
> >> @@ -195,8 +195,10 @@ static p4d_t *pti_user_pagetable_walk_p4d(unsigned long address)
> >> static pmd_t *pti_user_pagetable_walk_pmd(unsigned long address)
> >> {
> >> gfp_t gfp = (GFP_KERNEL | __GFP_NOTRACK | __GFP_ZERO);
> >> - p4d_t *p4d = pti_user_pagetable_walk_p4d(address);
> >> pud_t *pud;
> >> + p4d_t *p4d = pti_user_pagetable_walk_p4d(address);
> >> + if (WARN_ON(!p4d))
> >> + return NULL;
> >
> > First of all, I don't think we need the (new) warning here.
> > pti_user_pagetable_walk_p4d() only returns NULL if you try it on a
> > userspace _address_ or the page allocation fails. It already warns on
> > the address case.
> >
> > If you think the allocation path needs a warning, please do it as close
> > as possible to the _source_ of the warning (the failed allocation), not
> > in the caller.
> Hi,
> Just taking pti_clone_pmds() as reference, which add warning for NULL
> *target_pmd*. The warning does not really matter, I will remove the
> *WARN_ON* here and add a warning close to the failed allocation.
> Furthermore do you think we need to check _NULL_ return value?
> to avoid NULL pointer dereference when the return value is used later,
> such as,
> p4d_large(*p4d) //p4d is return value of pti_user_pagetable_walk_p4d
> *user_p4d = *kernel_p4d;//user_p4d is return value of pti_user_pagetable_walk_p4d
The Null pointer check makes sense.
Thanks,
tglx
Powered by blists - more mailing lists