svn commit: r293646 - stable/10/sys/fs/ext2fs
Pedro F. Giffuni
pfg at FreeBSD.org
Sun Jan 10 22:30:41 UTC 2016
Author: pfg
Date: Sun Jan 10 22:30:39 2016
New Revision: 293646
URL: https://svnweb.freebsd.org/changeset/base/293646
Log:
MFC r293370:
ext2fs: reading mmaped file in Ext4 causes panic
Always call brelse(path.ep_bp), fixing reading EXT4 files using mmap().
Patch by Damjan Jovanovic.
PR: 205938
Modified:
stable/10/sys/fs/ext2fs/ext2_bmap.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/fs/ext2fs/ext2_bmap.c
==============================================================================
--- stable/10/sys/fs/ext2fs/ext2_bmap.c Sun Jan 10 21:40:31 2016 (r293645)
+++ stable/10/sys/fs/ext2fs/ext2_bmap.c Sun Jan 10 22:30:39 2016 (r293646)
@@ -96,6 +96,7 @@ ext4_bmapext(struct vnode *vp, int32_t b
struct ext4_extent *ep;
struct ext4_extent_path path = { .ep_bp = NULL };
daddr_t lbn;
+ int ret = 0;
ip = VTOI(vp);
fs = ip->i_e2fs;
@@ -113,15 +114,21 @@ ext4_bmapext(struct vnode *vp, int32_t b
ext4_ext_find_extent(fs, ip, lbn, &path);
ep = path.ep_ext;
if (ep == NULL)
- return (EIO);
+ ret = EIO;
+ else {
+ *bnp = fsbtodb(fs, lbn - ep->e_blk +
+ (ep->e_start_lo | (daddr_t)ep->e_start_hi << 32));
- *bnp = fsbtodb(fs, lbn - ep->e_blk +
- (ep->e_start_lo | (daddr_t)ep->e_start_hi << 32));
+ if (*bnp == 0)
+ *bnp = -1;
+ }
- if (*bnp == 0)
- *bnp = -1;
+ if (path.ep_bp != NULL) {
+ brelse(path.ep_bp);
+ path.ep_bp = NULL;
+ }
- return (0);
+ return (ret);
}
/*
More information about the svn-src-stable
mailing list