default:
                split = bio_split_rw(bio, lim, nr_segs, bs,
                                get_max_io_size(bio, lim) << SECTOR_SHIFT);
+               if (IS_ERR(split))
+                       return NULL;
                break;
        }
 
        if (split) {
-               /* there isn't chance to merge the splitted bio */
+               /* there isn't chance to merge the split bio */
                split->bi_opf |= REQ_NOMERGE;
 
                blkcg_bio_issue_init(split);
 
        blk_status_t ret;
 
        bio = blk_queue_bounce(bio, q);
-       if (bio_may_exceed_limits(bio, &q->limits))
+       if (bio_may_exceed_limits(bio, &q->limits)) {
                bio = __bio_split_to_limits(bio, &q->limits, &nr_segs);
+               if (!bio)
+                       return;
+       }
 
        if (!bio_integrity_prep(bio))
                return;
 
        struct drbd_device *device = bio->bi_bdev->bd_disk->private_data;
 
        bio = bio_split_to_limits(bio);
+       if (!bio)
+               return;
 
        /*
         * what we "blindly" assume:
 
        dev_dbg(&dev->core, "%s\n", __func__);
 
        bio = bio_split_to_limits(bio);
+       if (!bio)
+               return;
 
        spin_lock_irq(&priv->lock);
        busy = !bio_list_empty(&priv->list);
 
                 * otherwise associated queue_limits won't be imposed.
                 */
                bio = bio_split_to_limits(bio);
+               if (!bio)
+                       return;
        }
 
        init_clone_info(&ci, md, map, bio, is_abnormal);
 
        }
 
        bio = bio_split_to_limits(bio);
+       if (!bio)
+               return;
 
        if (mddev->ro == MD_RDONLY && unlikely(rw == WRITE)) {
                if (bio_sectors(bio) != 0)
 
         * pool from the original queue to allocate the bvecs from.
         */
        bio = bio_split_to_limits(bio);
+       if (!bio)
+               return;
 
        srcu_idx = srcu_read_lock(&head->srcu);
        ns = nvme_find_path(head);
 
        unsigned long bytes_done;
 
        bio = bio_split_to_limits(bio);
+       if (!bio)
+               return;
 
        bytes_done = 0;
        dev_info = bio->bi_bdev->bd_disk->private_data;