[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