hfsplus: fix HFSPLUS_SB calling convention
HFSPLUS_SB doesn't return a pointer to the hfsplus-specific superblock information like all other FOO_SB macros, but dereference the pointer in a way that made it look like a direct struct derefence. This only works as long as the HFSPLUS_SB macro is used directly and prevents us from keepig a local hfsplus_sb_info pointer. Fix the calling convention and introduce a local sbi variable in all functions that use it constantly. Signed-off-by: Christoph Hellwig <hch@tuxera.com>
This commit is contained in:

committed by
Christoph Hellwig

parent
e753a62156
commit
dd73a01a30
@@ -126,7 +126,7 @@ int hfsplus_setxattr(struct dentry *dentry, const char *name,
|
||||
if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
res = hfs_find_init(HFSPLUS_SB(inode->i_sb).cat_tree, &fd);
|
||||
res = hfs_find_init(HFSPLUS_SB(inode->i_sb)->cat_tree, &fd);
|
||||
if (res)
|
||||
return res;
|
||||
res = hfsplus_find_cat(inode->i_sb, inode->i_ino, &fd);
|
||||
@@ -169,7 +169,7 @@ ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name,
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (size) {
|
||||
res = hfs_find_init(HFSPLUS_SB(inode->i_sb).cat_tree, &fd);
|
||||
res = hfs_find_init(HFSPLUS_SB(inode->i_sb)->cat_tree, &fd);
|
||||
if (res)
|
||||
return res;
|
||||
res = hfsplus_find_cat(inode->i_sb, inode->i_ino, &fd);
|
||||
|
Reference in New Issue
Block a user