kernel/fs/sysv/itree.c
.. .. @@ -145,6 +145,10 @@ 145 145 */ 146 146 parent = block_to_cpu(SYSV_SB(inode->i_sb), branch[n-1].key); 147 147 bh = sb_getblk(inode->i_sb, parent); 148 + if (!bh) {149 + sysv_free_block(inode->i_sb, branch[n].key);150 + break;151 + }148 152 lock_buffer(bh); 149 153 memset(bh->b_data, 0, blocksize); 150 154 branch[n].bh = bh; .. .. @@ -438,7 +442,7 @@ 438 442 res += blocks; 439 443 direct = 1; 440 444 } 441 - return blocks;445 + return res;442 446 } 443 447 444 448 int sysv_getattr(const struct path *path, struct kstat *stat,