linux 内核中static inline函数中局部变量的使用意义

例如如下函数,局部变量struct page new,*objects = new.objects - new.inuse;此处new两个成员没有初始化,
new.inuse = page->objects;此处赋值后面又没用,这些操作有什么意义?

static inline void *acquire_slab(struct kmem_cache *s,
        struct kmem_cache_node *n, struct page *page,
        int mode, int *objects)
{
    void *freelist;
    unsigned long counters;
    struct page new;

    lockdep_assert_held(&n->list_lock);

    /*
     * Zap the freelist and set the frozen bit.
     * The old freelist is the list of objects for the
     * per cpu allocation list.
     */
    freelist = page->freelist;
    counters = page->counters;
    new.counters = counters;
    *objects = new.objects - new.inuse;
    if (mode) {
        new.inuse = page->objects;
        new.freelist = NULL;
    } else {
        new.freelist = freelist;
    }

    VM_BUG_ON(new.frozen);
    new.frozen = 1;

    if (!__cmpxchg_double_slab(s, page,
            freelist, counters,
            new.freelist, new.counters,
            "acquire_slab"))
        return NULL;

    remove_partial(n, page);
    WARN_ON(!freelist);
    return freelist;
}

确实没啥用