lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAJfpeguqCrEbvv4d4jdOnczQ9VOf4u9sSghvnDOWvUb84fv6OQ@mail.gmail.com> Date: Thu, 24 Nov 2022 21:33:54 +0100 From: Miklos Szeredi <miklos@...redi.hu> To: Al Viro <viro@...iv.linux.org.uk> Cc: Thorsten Leemhuis <regressions@...mhuis.info>, Linux-fsdevel <linux-fsdevel@...r.kernel.org>, "regressions@...ts.linux.dev" <regressions@...ts.linux.dev>, LKML <linux-kernel@...r.kernel.org>, "Christian Brauner (Microsoft)" <brauner@...nel.org>, Pierre Labastie <pierre.labastie@...f.fr>, linux-unionfs@...r.kernel.org Subject: Re: [regression, bisected] Bug 216738 - Adding O_APPEND to O_RDWR with fcntl(fd, F_SETFL) does not work on overlayfs On Thu, 24 Nov 2022 at 18:03, Al Viro <viro@...iv.linux.org.uk> wrote: > So basically we have this > static int ovl_change_flags(struct file *file, unsigned int flags) > { > struct inode *inode = file_inode(file); > int err; > > flags &= OVL_SETFL_MASK; > > if (((flags ^ file->f_flags) & O_APPEND) && IS_APPEND(inode)) > return -EPERM; > > if ((flags & O_DIRECT) && !(file->f_mode & FMODE_CAN_ODIRECT)) > return -EINVAL; > > if (file->f_op->check_flags) { > err = file->f_op->check_flags(flags); > if (err) > return err; > } > > spin_lock(&file->f_lock); > file->f_flags = (file->f_flags & ~OVL_SETFL_MASK) | flags; > spin_unlock(&file->f_lock); > > return 0; > } > open-coding what setfl() would've done, without updating ->f_iocb_flags... > Not hard to deal with... > > I could pick it in vfs.git #fixes, or Miklos could put it through his tree. > Miklos, which way would you prefer that to go? I'll pick this into #overlayfs-next, as a PR for this cycle is needed anyway. Thanks, Miklos
Powered by blists - more mailing lists