[PATCH] afs, bash: Fix open(O_CREAT) on an extant AFS file in a sticky dir
Christian Brauner
brauner at kernel.org
Mon May 5 06:14:35 PDT 2025
On Tue, Apr 29, 2025 at 05:37:31PM +0100, David Howells wrote:
>
> Bash has a work around in redir_open() that causes open(O_CREAT) of a file
> in a sticky directory to be retried without O_CREAT if bash was built with
> AFS workarounds configured:
>
> #if defined (AFS)
> if ((fd < 0) && (errno == EACCES))
> {
> fd = open (filename, flags & ~O_CREAT, mode);
> errno = EACCES; /* restore errno */
> }
>
> #endif /* AFS */
>
> This works around the kernel not being able to validly check the
> current_fsuid() against i_uid on the file or the directory because the
> uidspaces of the system and of AFS may well be disjoint. The problem lies
> with the uid checks in may_create_in_sticky().
>
> However, the bash work around is going to be removed:
Why is it removed? That's a very strange comment:
#if 0 /* reportedly no longer needed */
So then just don't remove it. I don't see a reason for us to workaround
userspace creating a bug for itself and forcing us to add two new inode
operations to work around it.
More information about the linux-afs
mailing list