Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932919AbbLBPrx (ORCPT ); Wed, 2 Dec 2015 10:47:53 -0500 Received: from m50-135.163.com ([123.125.50.135]:52790 "EHLO m50-135.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932896AbbLBPru (ORCPT ); Wed, 2 Dec 2015 10:47:50 -0500 From: Geliang Tang To: Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton Cc: Geliang Tang , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] mm/slab: use list_first_entry_or_null() Date: Wed, 2 Dec 2015 23:46:11 +0800 Message-Id: <7e551749f5a50cef15a33320d6d33b9d0b0986bd.1449070964.git.geliangtang@163.com> X-Mailer: git-send-email 2.5.0 X-CM-TRANSID: D9GowACnR9BIEl9WOqs8AA--.12423S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7uFyUJr15tFWUCryDAFWrZrb_yoW8AFyrpa 1akw1xGF4rWr1xuF1rGF4DArWavrn7KayjqrW2kw1xXFya9rZ5KFsrAryjyFyF9r95WrZF vFW8Kry29w4UCrJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07U75rxUUUUU= X-Originating-IP: [116.77.146.26] X-CM-SenderInfo: 5jhoxtpqjwt0rj6rljoofrz/1tbiJQnEmVUL8hodugAAsg Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2031 Lines: 75 Simplify the code with list_first_entry_or_null(). Signed-off-by: Geliang Tang --- mm/slab.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mm/slab.c b/mm/slab.c index 4765c97..6bb0466 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -2791,18 +2791,18 @@ retry: } while (batchcount > 0) { - struct list_head *entry; struct page *page; /* Get slab alloc is to come from. */ - entry = n->slabs_partial.next; - if (entry == &n->slabs_partial) { + page = list_first_entry_or_null(&n->slabs_partial, + struct page, lru); + if (!page) { n->free_touched = 1; - entry = n->slabs_free.next; - if (entry == &n->slabs_free) + page = list_first_entry_or_null(&n->slabs_free, + struct page, lru); + if (!page) goto must_grow; } - page = list_entry(entry, struct page, lru); check_spinlock_acquired(cachep); /* @@ -3085,7 +3085,6 @@ retry: static void *____cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid) { - struct list_head *entry; struct page *page; struct kmem_cache_node *n; void *obj; @@ -3098,15 +3097,16 @@ static void *____cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, retry: check_irq_off(); spin_lock(&n->list_lock); - entry = n->slabs_partial.next; - if (entry == &n->slabs_partial) { + page = list_first_entry_or_null(&n->slabs_partial, + struct page, lru); + if (!page) { n->free_touched = 1; - entry = n->slabs_free.next; - if (entry == &n->slabs_free) + page = list_first_entry_or_null(&n->slabs_free, + struct page, lru); + if (!page) goto must_grow; } - page = list_entry(entry, struct page, lru); check_spinlock_acquired_node(cachep, nodeid); STATS_INC_NODEALLOCS(cachep); -- 2.5.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/