Re: [RFC] setxattr bugs

From: Dave Kleikamp
Date: Sun Feb 03 2013 - 08:59:46 EST


On 02/02/2013 10:30 PM, Al Viro wrote:
> * JFS, since 2005: setxattr(name, "system.posix_acl_access", NULL, 0, 0)
> succeeds, creating an empty EA with "system.posix_acl_access" as name.
> Validity checks should apply _after_
> if (value == NULL) { /* empty EA, do not remove */
> value = "";
> value_len = 0;
> }
> and not before it.

This is probably a hold-over from weird OS/2 behavior that we really
don't need to keep.

> * reiserfs, since 2009: setxattr(name, attr_name, NULL, 0, 0) is
> treated as removexattr(name, attr_name), not as emptying given xattr.
>
> The question is, does either of those cross into "established
> weirdness in ABI" or are they still at the "bugs to be fixed" stage?
>
> FWIW, I'm seriously tempted to stop passing NULL as the
> third argument of ->setxattr(), essentially taking all those
> if (!value) value = ""; pieces from individual ->setxattr() instances
> to __vfs_setxattr_noperm() (all other callers of ->setxattr() never
> pass NULL data or 0 size, so it's irrelevant for them). Would fix
> both jfs and reiserfs weirdness....
>
> Objections?

no objection from me. I can clean up the jfs code so that it no longer
saves empty xattrs.

Thanks,
Shaggy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/