Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9b8404c authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds
Browse files

[PATCH] pi-futex: introduce debug_check_no_locks_freed()



Add debug_check_no_locks_freed(), as a central inline to add
bad-lock-free-debugging functionality to.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6abdce76
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
	if (PageHighMem(page))
		return;
	if (!enable)
		mutex_debug_check_no_locks_freed(page_address(page),
		debug_check_no_locks_freed(page_address(page),
					   numpages * PAGE_SIZE);

	/* the return value is ignored - the calls cannot fail,
+8 −2
Original line number Diff line number Diff line
@@ -1030,12 +1030,18 @@ static inline void vm_stat_account(struct mm_struct *mm,
}
#endif /* CONFIG_PROC_FS */

static inline void
debug_check_no_locks_freed(const void *from, unsigned long len)
{
	mutex_debug_check_no_locks_freed(from, len);
}

#ifndef CONFIG_DEBUG_PAGEALLOC
static inline void
kernel_map_pages(struct page *page, int numpages, int enable)
{
	if (!PageHighMem(page) && !enable)
		mutex_debug_check_no_locks_freed(page_address(page),
		debug_check_no_locks_freed(page_address(page),
					   numpages * PAGE_SIZE);
}
#endif
+2 −2
Original line number Diff line number Diff line
@@ -446,7 +446,7 @@ static void __free_pages_ok(struct page *page, unsigned int order)

	arch_free_page(page, order);
	if (!PageHighMem(page))
		mutex_debug_check_no_locks_freed(page_address(page),
		debug_check_no_locks_freed(page_address(page),
					   PAGE_SIZE<<order);

	for (i = 0 ; i < (1 << order) ; ++i)
+1 −1
Original line number Diff line number Diff line
@@ -3397,7 +3397,7 @@ void kfree(const void *objp)
	local_irq_save(flags);
	kfree_debugcheck(objp);
	c = virt_to_cache(objp);
	mutex_debug_check_no_locks_freed(objp, obj_size(c));
	debug_check_no_locks_freed(objp, obj_size(c));
	__cache_free(c, (void *)objp);
	local_irq_restore(flags);
}