From: Heinz Mauelshagen <heinzm@xxxxxxxxxx> Addresses callers' (insert_in*cache()) requirement that alloc_entry() return NULL when an entry isn't able to be allocated. Signed-off-by: Heinz Mauelshagen <heinzm@xxxxxxxxxx> Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx> --- drivers/md/dm-cache-policy-mq.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/md/dm-cache-policy-mq.c b/drivers/md/dm-cache-policy-mq.c index 108380d..35e6798 100644 --- a/drivers/md/dm-cache-policy-mq.c +++ b/drivers/md/dm-cache-policy-mq.c @@ -399,18 +399,20 @@ static void hash_remove(struct entry *e) */ static struct entry *alloc_entry(struct mq_policy *mq) { - struct entry *e; + struct entry *e = NULL; if (mq->nr_entries_allocated >= mq->nr_entries) { BUG_ON(!list_empty(&mq->free)); return NULL; } - e = list_entry(list_pop(&mq->free), struct entry, list); - INIT_LIST_HEAD(&e->list); - INIT_HLIST_NODE(&e->hlist); + if (!list_empty(&mq->free)) { + e = list_entry(list_pop(&mq->free), struct entry, list); + INIT_LIST_HEAD(&e->list); + INIT_HLIST_NODE(&e->hlist); + mq->nr_entries_allocated++; + } - mq->nr_entries_allocated++; return e; } -- 1.8.1.4 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel