jfs: Fix early release of acl in jfs_get_acl
authorStefan Bader <[email protected]>
Thu, 23 Jul 2009 09:26:05 +0000 (11:26 +0200)
committerDave Kleikamp <[email protected]>
Thu, 23 Jul 2009 16:08:36 +0000 (11:08 -0500)
BugLink: http://bugs.launchpad.net/ubuntu/+bug/396780
Commit 073aaa1b142461d91f83da66db1184d7c1b1edea "helpers for acl
caching + switch to those" introduced new helper functions for
acl handling but seems to have introduced a regression for jfs as
the acl is released before returning it to the caller, instead of
leaving this for the caller to do.
This causes the acl object to be used after freeing it, leading
to kernel panics in completely different places.

Thanks to Christophe Dumez for reporting and bisecting into this.

Reported-by: Christophe Dumez <[email protected]>
Tested-by: Christophe Dumez <[email protected]>
Signed-off-by: Stefan Bader <[email protected]>
Acked-by: Andy Whitcroft <[email protected]>
Signed-off-by: Dave Kleikamp <[email protected]>
fs/jfs/acl.c

index 91fa3ad6e8c2dc01144bcf1ab56c250a9c9e54bb..a29c7c3e3fb81a58148c93e0dd56e858bac04939 100644 (file)
@@ -67,10 +67,8 @@ static struct posix_acl *jfs_get_acl(struct inode *inode, int type)
                acl = posix_acl_from_xattr(value, size);
        }
        kfree(value);
-       if (!IS_ERR(acl)) {
+       if (!IS_ERR(acl))
                set_cached_acl(inode, type, acl);
-               posix_acl_release(acl);
-       }
        return acl;
 }