dmapools: protect page_list walk in show_pools()
show_pools() walks the page_list of a pool w/o protection against the list modifications in alloc/free. Take pool->lock to avoid stomping into nirvana. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Matthew Wilcox <willy@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
4d6c13f87d
Коммит
c49568235d
|
@ -86,10 +86,12 @@ show_pools(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
unsigned pages = 0;
|
||||
unsigned blocks = 0;
|
||||
|
||||
spin_lock_irq(&pool->lock);
|
||||
list_for_each_entry(page, &pool->page_list, page_list) {
|
||||
pages++;
|
||||
blocks += page->in_use;
|
||||
}
|
||||
spin_unlock_irq(&pool->lock);
|
||||
|
||||
/* per-pool info, no real statistics yet */
|
||||
temp = scnprintf(next, size, "%-16s %4u %4Zu %4Zu %2u\n",
|
||||
|
|
Загрузка…
Ссылка в новой задаче