Hi Nick, Thanks for the review.
<quote sender="Nick Piggin"> > On Wednesday 13 February 2008 00:10, Eugene Teo wrote: [...] > > diff --git a/mm/memory.c b/mm/memory.c > > index 54f951b..c7e0610 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -1003,7 +1003,9 @@ int get_user_pages(struct task_struct *tsk, struct > > mm_struct *mm, unsigned int foll_flags; > > > > vma = find_extend_vma(mm, start); > > - if (!vma && in_gate_area(tsk, start)) { > > + if (!vma) > > + goto finish_or_fault; > > + if (in_gate_area(tsk, start)) { > > unsigned long pg = start & PAGE_MASK; > > struct vm_area_struct *gate_vma = get_gate_vma(tsk); > > pgd_t *pgd; > > Doesn't this break the logic? > > If you don't have a vma, but you are in the gate area, then you > should use the gate vma. With your patch, gate area will fault. Yes, you are right. I also relooked at the patch, and actually vma is validated after if (... in_gate_area(tsk, start)) { ... }, so my patch is not correct. > > @@ -1011,7 +1013,7 @@ int get_user_pages(struct task_struct *tsk, struct > > mm_struct *mm, pmd_t *pmd; > > pte_t *pte; > > if (write) /* user gate pages are read-only */ > > - return i ? : -EFAULT; > > + goto finish_or_fault; > > I don't know if this is exactly a cleanup or not... I guess gcc > probably isn't smart enough to fold them all together, so it should > use a little less code in the unlikely branches. Does it? Agree. Eugene -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/