Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: nilfs2: fix bh leak in nilfs_cpfile_delete_checkpoints function
This commit is contained in:
@ -311,7 +311,7 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
|
|||||||
ret = nilfs_cpfile_get_checkpoint_block(cpfile, cno, 0, &cp_bh);
|
ret = nilfs_cpfile_get_checkpoint_block(cpfile, cno, 0, &cp_bh);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
if (ret != -ENOENT)
|
if (ret != -ENOENT)
|
||||||
goto out_sem;
|
goto out_header;
|
||||||
/* skip hole */
|
/* skip hole */
|
||||||
ret = 0;
|
ret = 0;
|
||||||
continue;
|
continue;
|
||||||
@ -344,7 +344,7 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
|
|||||||
continue;
|
continue;
|
||||||
printk(KERN_ERR "%s: cannot delete block\n",
|
printk(KERN_ERR "%s: cannot delete block\n",
|
||||||
__func__);
|
__func__);
|
||||||
goto out_sem;
|
goto out_header;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,6 +361,8 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
|
|||||||
nilfs_mdt_mark_dirty(cpfile);
|
nilfs_mdt_mark_dirty(cpfile);
|
||||||
kunmap_atomic(kaddr, KM_USER0);
|
kunmap_atomic(kaddr, KM_USER0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out_header:
|
||||||
brelse(header_bh);
|
brelse(header_bh);
|
||||||
|
|
||||||
out_sem:
|
out_sem:
|
||||||
|
Reference in New Issue
Block a user