diff --git a/mm/zbud.c b/mm/zbud.c index 7ec5f27a68b08df5fbc1048049b6bc03b3014be9..c48e60bae4a148a1eb02fa03b4541bbd2c353e3b 100644 --- a/mm/zbud.c +++ b/mm/zbud.c @@ -93,8 +93,14 @@ */ struct zbud_pool { spinlock_t lock; - struct list_head unbuddied[NCHUNKS]; - struct list_head buddied; + union { + /* + * Reuse unbuddied[0] as buddied on the ground that + * unbuddied[0] is unused. + */ + struct list_head buddied; + struct list_head unbuddied[NCHUNKS]; + }; struct list_head lru; u64 pages_nr; const struct zbud_ops *ops;