aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-11-23 01:42:42 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-11-23 01:42:42 -0500
commit3f3211e755f329c56acf55faa0dbf91befd7b5ca (patch)
tree786ef2efaee7f25657d31129eb6dda0827afbcf3
parent275327851e5c3e71bc73eaee7f065f22b2d1fe6c (diff)
parent274e0a1f4777b9362fc03a34e86358cc36003e48 (diff)
Merge tag 'xfs-4.15-merge-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
Pull xfs fixes from Darrick Wong: - Fix a memory leak in the new in-core extent map - Refactor the xfs_dev_t conversions for easier xfsprogs porting * tag 'xfs-4.15-merge-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: xfs: abstract out dev_t conversions xfs: fix memory leak in xfs_iext_free_last_leaf
-rw-r--r--fs/xfs/libxfs/xfs_iext_tree.c2
-rw-r--r--fs/xfs/libxfs/xfs_inode_fork.c8
-rw-r--r--fs/xfs/xfs_linux.h10
3 files changed, 13 insertions, 7 deletions
diff --git a/fs/xfs/libxfs/xfs_iext_tree.c b/fs/xfs/libxfs/xfs_iext_tree.c
index 19e546a41251..89bf16b4d937 100644
--- a/fs/xfs/libxfs/xfs_iext_tree.c
+++ b/fs/xfs/libxfs/xfs_iext_tree.c
@@ -850,9 +850,9 @@ static void
850xfs_iext_free_last_leaf( 850xfs_iext_free_last_leaf(
851 struct xfs_ifork *ifp) 851 struct xfs_ifork *ifp)
852{ 852{
853 ifp->if_u1.if_root = NULL;
854 ifp->if_height--; 853 ifp->if_height--;
855 kmem_free(ifp->if_u1.if_root); 854 kmem_free(ifp->if_u1.if_root);
855 ifp->if_u1.if_root = NULL;
856} 856}
857 857
858void 858void
diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c
index 1c90ec41e9df..c79a1616b79d 100644
--- a/fs/xfs/libxfs/xfs_inode_fork.c
+++ b/fs/xfs/libxfs/xfs_inode_fork.c
@@ -42,11 +42,6 @@ STATIC int xfs_iformat_local(xfs_inode_t *, xfs_dinode_t *, int, int);
42STATIC int xfs_iformat_extents(xfs_inode_t *, xfs_dinode_t *, int); 42STATIC int xfs_iformat_extents(xfs_inode_t *, xfs_dinode_t *, int);
43STATIC int xfs_iformat_btree(xfs_inode_t *, xfs_dinode_t *, int); 43STATIC int xfs_iformat_btree(xfs_inode_t *, xfs_dinode_t *, int);
44 44
45static inline dev_t xfs_to_linux_dev_t(xfs_dev_t dev)
46{
47 return MKDEV(sysv_major(dev) & 0x1ff, sysv_minor(dev));
48}
49
50/* 45/*
51 * Copy inode type and data and attr format specific information from the 46 * Copy inode type and data and attr format specific information from the
52 * on-disk inode to the in-core inode and fork structures. For fifos, devices, 47 * on-disk inode to the in-core inode and fork structures. For fifos, devices,
@@ -792,7 +787,8 @@ xfs_iflush_fork(
792 case XFS_DINODE_FMT_DEV: 787 case XFS_DINODE_FMT_DEV:
793 if (iip->ili_fields & XFS_ILOG_DEV) { 788 if (iip->ili_fields & XFS_ILOG_DEV) {
794 ASSERT(whichfork == XFS_DATA_FORK); 789 ASSERT(whichfork == XFS_DATA_FORK);
795 xfs_dinode_put_rdev(dip, sysv_encode_dev(VFS_I(ip)->i_rdev)); 790 xfs_dinode_put_rdev(dip,
791 linux_to_xfs_dev_t(VFS_I(ip)->i_rdev));
796 } 792 }
797 break; 793 break;
798 794
diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h
index 6282bfc1afa9..99562ec0de56 100644
--- a/fs/xfs/xfs_linux.h
+++ b/fs/xfs/xfs_linux.h
@@ -204,6 +204,16 @@ static inline kgid_t xfs_gid_to_kgid(uint32_t gid)
204 return make_kgid(&init_user_ns, gid); 204 return make_kgid(&init_user_ns, gid);
205} 205}
206 206
207static inline dev_t xfs_to_linux_dev_t(xfs_dev_t dev)
208{
209 return MKDEV(sysv_major(dev) & 0x1ff, sysv_minor(dev));
210}
211
212static inline xfs_dev_t linux_to_xfs_dev_t(dev_t dev)
213{
214 return sysv_encode_dev(dev);
215}
216
207/* 217/*
208 * Various platform dependent calls that don't fit anywhere else 218 * Various platform dependent calls that don't fit anywhere else
209 */ 219 */