diff --git a/mm/mempool.c b/mm/mempool.c
index cc1ca86dfc2496b6e0cae7703d4a6dc4f4f97150..3e8f1fed0e1f8accce8d9b931e59ba432ab92d53 100644
--- a/mm/mempool.c
+++ b/mm/mempool.c
@@ -263,6 +263,9 @@ void mempool_free(void *element, mempool_t *pool)
 {
 	unsigned long flags;
 
+	if (unlikely(element == NULL))
+		return;
+
 	smp_mb();
 	if (pool->curr_nr < pool->min_nr) {
 		spin_lock_irqsave(&pool->lock, flags);