diff options
| author | Nitin Gupta <nitin.m.gupta@oracle.com> | 2017-07-29 11:42:19 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-08-09 22:12:20 -0700 | 
| commit | 763797847460a9659a6dfa79b354f3b58e68d523 (patch) | |
| tree | 5dba5ae98cf31a08c1b4c8fc6f3803cf4f0d0c50 /arch/sparc/mm/hugetlbpage.c | |
| parent | f10bb00790dd3cf550f7ae6991c4d1a128802c00 (diff) | |
| download | talos-op-linux-763797847460a9659a6dfa79b354f3b58e68d523.tar.gz talos-op-linux-763797847460a9659a6dfa79b354f3b58e68d523.zip  | |
sparc64: Cleanup hugepage table walk functions
Flatten out nested code structure in huge_pte_offset()
and huge_pte_alloc().
Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/mm/hugetlbpage.c')
| -rw-r--r-- | arch/sparc/mm/hugetlbpage.c | 54 | 
1 files changed, 20 insertions, 34 deletions
diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c index 7acb84db952c..bcd8cdbc377f 100644 --- a/arch/sparc/mm/hugetlbpage.c +++ b/arch/sparc/mm/hugetlbpage.c @@ -266,27 +266,19 @@ pte_t *huge_pte_alloc(struct mm_struct *mm,  	pgd_t *pgd;  	pud_t *pud;  	pmd_t *pmd; -	pte_t *pte = NULL;  	pgd = pgd_offset(mm, addr);  	pud = pud_alloc(mm, pgd, addr);  	if (!pud)  		return NULL; -  	if (sz >= PUD_SIZE) -		pte = (pte_t *)pud; -	else { -		pmd = pmd_alloc(mm, pud, addr); -		if (!pmd) -			return NULL; - -		if (sz >= PMD_SIZE) -			pte = (pte_t *)pmd; -		else -			pte = pte_alloc_map(mm, pmd, addr); -	} - -	return pte; +		return (pte_t *)pud; +	pmd = pmd_alloc(mm, pud, addr); +	if (!pmd) +		return NULL; +	if (sz >= PMD_SIZE) +		return (pte_t *)pmd; +	return pte_alloc_map(mm, pmd, addr);  }  pte_t *huge_pte_offset(struct mm_struct *mm, @@ -295,27 +287,21 @@ pte_t *huge_pte_offset(struct mm_struct *mm,  	pgd_t *pgd;  	pud_t *pud;  	pmd_t *pmd; -	pte_t *pte = NULL;  	pgd = pgd_offset(mm, addr); -	if (!pgd_none(*pgd)) { -		pud = pud_offset(pgd, addr); -		if (!pud_none(*pud)) { -			if (is_hugetlb_pud(*pud)) -				pte = (pte_t *)pud; -			else { -				pmd = pmd_offset(pud, addr); -				if (!pmd_none(*pmd)) { -					if (is_hugetlb_pmd(*pmd)) -						pte = (pte_t *)pmd; -					else -						pte = pte_offset_map(pmd, addr); -				} -			} -		} -	} - -	return pte; +	if (pgd_none(*pgd)) +		return NULL; +	pud = pud_offset(pgd, addr); +	if (pud_none(*pud)) +		return NULL; +	if (is_hugetlb_pud(*pud)) +		return (pte_t *)pud; +	pmd = pmd_offset(pud, addr); +	if (pmd_none(*pmd)) +		return NULL; +	if (is_hugetlb_pmd(*pmd)) +		return (pte_t *)pmd; +	return pte_offset_map(pmd, addr);  }  void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,  | 

