From 8bc613befaec184b59bf3405e8d06fafdc209484 Mon Sep 17 00:00:00 2001 From: Rickard Strandqvist Date: Fri, 30 May 2014 01:11:58 +0200 Subject: [PATCH 1/2] metag: hugetlbpage: Remove null pointer checks that could never happen There are inconsistent NULL checks in hugetlb_get_unmapped_area_existing(). The last conditional block in the loop checks vma, but vma is dereferenced after that. Due to the checks above however (bearing in mind after_huge is either 0 or 1) vma is guaranteed not to be NULL here, so remove that part of the check. Signed-off-by: Rickard Strandqvist [james.hogan@imgtec.com: remove brackets and expand commit message] Signed-off-by: James Hogan --- arch/metag/mm/hugetlbpage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c index 3c52fa6d0f8e..3c32075d2945 100644 --- a/arch/metag/mm/hugetlbpage.c +++ b/arch/metag/mm/hugetlbpage.c @@ -173,7 +173,7 @@ new_search: mm->context.part_huge = 0; return addr; } - if (vma && (vma->vm_flags & MAP_HUGETLB)) { + if (vma->vm_flags & MAP_HUGETLB) { /* space after a huge vma in 2nd level page table? */ if (vma->vm_end & HUGEPT_MASK) { after_huge = 1; From f93125ae17d1d259b5aba84016db260903822194 Mon Sep 17 00:00:00 2001 From: Andrey Utkin Date: Thu, 17 Jul 2014 18:58:06 +0300 Subject: [PATCH 2/2] metag: cachepart: Fix failure check [linux-3.16-rc5/arch/metag/kernel/cachepart.c:102]: (style) Checking if unsigned variable 'thread_cache_size' is less than zero. Source code is if (thread_cache_size < 0) pr_emerg("Can't read %s cache size\n", cache_type ? "DCACHE" : "ICACHE"); but unsigned int thread_cache_size; Function get_thread_cache_size returns an error code as (unsigned int) -1. Change get_thread_cache_size() to return signed int, and its result is stored into signed int variable. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=80361 Reported-by: David Binderman Signed-off-by: Andrey Utkin Signed-off-by: James Hogan --- arch/metag/kernel/cachepart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/metag/kernel/cachepart.c b/arch/metag/kernel/cachepart.c index 0a2385fa2a1d..04b7d4f8429a 100644 --- a/arch/metag/kernel/cachepart.c +++ b/arch/metag/kernel/cachepart.c @@ -55,7 +55,7 @@ unsigned int get_global_icache_size(void) return (get_icache_size() * ((temp >> SYSC_xCPARTG_AND_S) + 1)) >> 4; } -static unsigned int get_thread_cache_size(unsigned int cache, int thread_id) +static int get_thread_cache_size(unsigned int cache, int thread_id) { unsigned int cache_size; unsigned int t_cache_part; @@ -94,7 +94,7 @@ static unsigned int get_thread_cache_size(unsigned int cache, int thread_id) void check_for_cache_aliasing(int thread_id) { - unsigned int thread_cache_size; + int thread_cache_size; unsigned int cache_type; for (cache_type = ICACHE; cache_type <= DCACHE; cache_type++) { thread_cache_size =