From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Kleikamp Subject: Re: [RFC] setxattr bugs Date: Sun, 03 Feb 2013 07:59:27 -0600 Message-ID: <510E6D3F.2060200@oracle.com> References: <20130203043046.GR4503@ZenIV.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: linux-kernel@vger.kernel.org, Linus Torvalds , linux-fsdevel@vger.kernel.org, Jeff Mahoney , Dave Kleikamp To: Al Viro Return-path: Received: from aserp1040.oracle.com ([141.146.126.69]:28050 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752698Ab3BCN7i (ORCPT ); Sun, 3 Feb 2013 08:59:38 -0500 In-Reply-To: <20130203043046.GR4503@ZenIV.linux.org.uk> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 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