On Tue, Aug 01, 2023 at 07:21:58PM +0200, Christoph Hellwig wrote: > @@ -569,7 +594,23 @@ static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) > iov_iter_truncate(from, size); > } > > - ret = __generic_file_write_iter(iocb, from); > + ret = file_remove_privs(file); > + if (ret) > + return ret; That chunk is a bit of a WTF generator... Thankfully, static int __file_remove_privs(struct file *file, unsigned int flags) { struct dentry *dentry = file_dentry(file); struct inode *inode = file_inode(file); int error = 0; int kill; if (IS_NOSEC(inode) || !S_ISREG(inode->i_mode)) return 0; means that it's really a no-op. But I'd still suggest removing it, just to reduce the amount of head-scratching for people who'll be reading that code later...