move the ACL validation check in to fs/posix_acl.c.
Including nullpointer check and PTR_ERR check.
---
Signed-off-by: Liuwenyi <qingshenlwy@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Joel Becker <joel.becker@oracle.com>
Cc: Chris Ball <cjb@laptop.org>
Cc: James Morris <jmorris@namei.org>
Cc: linux-btrfs@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 2e9e699..0f14f95 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -102,12 +102,9 @@ static int btrfs_set_acl(struct btrfs_trans_handle
*trans,
char *value = NULL;
mode_t mode;
- if (acl) {
- ret = posix_acl_valid(acl);
- if (ret < 0)
- return ret;
- ret = 0;
- }
+ ret = posix_acl_valid(acl);
+ if (ret < 0)
+ return ret;
switch (type) {
case ACL_TYPE_ACCESS:
--
Best Regards,
Liuwenyi
On Mon, Dec 21, 2009 at 07:52:58PM +0800, Liuwenyi wrote:> @@ -102,12 +102,9 @@ static int btrfs_set_acl(struct btrfs_trans_handle > *trans, > char *value = NULL; > mode_t mode; > > - if (acl) { > - ret = posix_acl_valid(acl); > - if (ret < 0) > - return ret; > - ret = 0; > - } > + ret = posix_acl_valid(acl); > + if (ret < 0) > + return ret;... and now you can''t remove acl from btrfs inode. At all. NAK the entire series. You are changing existing user-visible behaviour for all filesystems for no reason and at least in this case it''s clearly wrong change. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi All:
I''m sorry for my stupid. I am crazy for fixing this bug.
And make so much mistake.
Maybe I need cool down and think more.
--
Best Regards,
Liuwenyi
2009-12-22
2009/12/22 Al Viro <viro@zeniv.linux.org.uk>:> On Mon, Dec 21, 2009 at 07:52:58PM +0800, Liuwenyi wrote:
>> @@ -102,12 +102,9 @@ static int btrfs_set_acl(struct btrfs_trans_handle
>> *trans,
>> char *value = NULL;
>> mode_t mode;
>>
>> - if (acl) {
>> - ret = posix_acl_valid(acl);
>> - if (ret < 0)
>> - return ret;
>> - ret = 0;
>> - }
>> + ret = posix_acl_valid(acl);
>> + if (ret < 0)
>> + return ret;
>
> ... and now you can''t remove acl from btrfs inode. At all.
>
> NAK the entire series. You are changing existing user-visible behaviour
> for all filesystems for no reason and at least in this case it''s
clearly
> wrong change.
>
On Tue, Dec 22, 2009 at 10:31:38PM +0800, liu weni wrote:> Hi All: > > I''m sorry for my stupid. I am crazy for fixing this bug. > And make so much mistake.Welcome to the club. It''s OK, _everyone_ around here had done that. Many times.> Maybe I need cool down and think more.Always a good advice, but in this case it''s a bit more specific - if you see that you are modifying behaviour for some arguments, figure out what would lead to such arguments and see if that behaviour is intentional ;-) And if after that you are still not sure whether it''s a bug or not, ask the people involved what the hell had they intended to happen in such-and-such case (often enough that''ll bring variants of "nice catch" - bugs *do* happen).