struct pnfs_layout_segment *lseg;
        struct inode *ino = lo->plh_inode;
        LIST_HEAD(free_me);
-       int status = -EINVAL;
 
        if (!pnfs_sanity_check_layout_range(&res->range))
-               goto out;
+               return ERR_PTR(-EINVAL);
 
        /* Inject layout blob into I/O device driver */
        lseg = NFS_SERVER(ino)->pnfs_curr_ld->alloc_lseg(lo, res, lgp->gfp_flags);
-       if (!lseg || IS_ERR(lseg)) {
+       if (IS_ERR_OR_NULL(lseg)) {
                if (!lseg)
-                       status = -ENOMEM;
-               else
-                       status = PTR_ERR(lseg);
-               dprintk("%s: Could not allocate layout: error %d\n",
-                      __func__, status);
-               goto out;
+                       lseg = ERR_PTR(-ENOMEM);
+
+               dprintk("%s: Could not allocate layout: error %ld\n",
+                      __func__, PTR_ERR(lseg));
+               return lseg;
        }
 
        init_lseg(lo, lseg);
        spin_lock(&ino->i_lock);
        if (pnfs_layoutgets_blocked(lo)) {
                dprintk("%s forget reply due to state\n", __func__);
-               goto out_forget_reply;
+               goto out_forget;
        }
 
        if (nfs4_stateid_match_other(&lo->plh_stateid, &res->stateid)) {
                /* existing state ID, make sure the sequence number matches. */
                if (pnfs_layout_stateid_blocked(lo, &res->stateid)) {
                        dprintk("%s forget reply due to sequence\n", __func__);
-                       status = -EAGAIN;
-                       goto out_forget_reply;
+                       goto out_forget;
                }
                pnfs_set_layout_stateid(lo, &res->stateid, false);
        } else {
        spin_unlock(&ino->i_lock);
        pnfs_free_lseg_list(&free_me);
        return lseg;
-out:
-       return ERR_PTR(status);
 
-out_forget_reply:
+out_forget:
        spin_unlock(&ino->i_lock);
        lseg->pls_layout = lo;
        NFS_SERVER(ino)->pnfs_curr_ld->free_lseg(lseg);
-       goto out;
+       return ERR_PTR(-EAGAIN);
 }
 
 static void