return blk_mq_alloc_tag_set(set);
 }
 
-static void null_validate_conf(struct nullb_device *dev)
+static int null_validate_conf(struct nullb_device *dev)
 {
        dev->blocksize = round_down(dev->blocksize, 512);
        dev->blocksize = clamp_t(unsigned int, dev->blocksize, 512, 4096);
        /* can not stop a queue */
        if (dev->queue_mode == NULL_Q_BIO)
                dev->mbps = 0;
+
+       if (dev->zoned &&
+           (!dev->zone_size || !is_power_of_2(dev->zone_size))) {
+               pr_err("zone_size must be power-of-two\n");
+               return -EINVAL;
+       }
+
+       return 0;
 }
 
 #ifdef CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION
        struct nullb *nullb;
        int rv;
 
-       null_validate_conf(dev);
+       rv = null_validate_conf(dev);
+       if (rv)
+               return rv;
 
        nullb = kzalloc_node(sizeof(*nullb), GFP_KERNEL, dev->home_node);
        if (!nullb) {
                g_bs = PAGE_SIZE;
        }
 
-       if (!is_power_of_2(g_zone_size)) {
-               pr_err("zone_size must be power-of-two\n");
-               return -EINVAL;
-       }
-
        if (g_home_node != NUMA_NO_NODE && g_home_node >= nr_online_nodes) {
                pr_err("invalid home_node value\n");
                g_home_node = NUMA_NO_NODE;