vm_unacct_memory(pages * VM_ACCT(PAGE_SIZE));
 }
 
-static inline bool shmem_inode_acct_block(struct inode *inode, long pages)
+static inline int shmem_inode_acct_block(struct inode *inode, long pages)
 {
        struct shmem_inode_info *info = SHMEM_I(inode);
        struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
+       int err = -ENOSPC;
 
        if (shmem_acct_block(info->flags, pages))
-               return false;
+               return err;
 
        if (sbinfo->max_blocks) {
                if (percpu_counter_compare(&sbinfo->used_blocks,
                percpu_counter_add(&sbinfo->used_blocks, pages);
        }
 
-       return true;
+       return 0;
 
 unacct:
        shmem_unacct_blocks(info->flags, pages);
-       return false;
+       return err;
 }
 
 static inline void shmem_inode_unacct_blocks(struct inode *inode, long pages)
        struct shmem_inode_info *info = SHMEM_I(inode);
        unsigned long flags;
 
-       if (!shmem_inode_acct_block(inode, pages))
+       if (shmem_inode_acct_block(inode, pages))
                return false;
 
        /* nrpages adjustment first, then shmem_recalc_inode() when balanced */
        struct shmem_inode_info *info = SHMEM_I(inode);
        struct folio *folio;
        int nr;
-       int err = -ENOSPC;
+       int err;
 
        if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
                huge = false;
        nr = huge ? HPAGE_PMD_NR : 1;
 
-       if (!shmem_inode_acct_block(inode, nr))
+       err = shmem_inode_acct_block(inode, nr);
+       if (err)
                goto failed;
 
        if (huge)
        int ret;
        pgoff_t max_off;
 
-       if (!shmem_inode_acct_block(inode, 1)) {
+       if (shmem_inode_acct_block(inode, 1)) {
                /*
                 * We may have got a page, returned -ENOENT triggering a retry,
                 * and now we find ourselves with -ENOMEM. Release the page, to