kernfs: set DenySpliceIn for DynamicBytesFD

DynamicBytesFD is used for cgroup and proc files. In Linux, these file systems
don't set splice_write callbacks.

Reported-by: syzbot+79b8543454bedce9858b@syzkaller.appspotmail.com
PiperOrigin-RevId: 553818208
This commit is contained in:
Andrei Vagin
2023-08-04 08:45:42 -07:00
committed by gVisor bot
parent 6f978d7185
commit 118a17d92d
@@ -105,7 +105,11 @@ type DynamicBytesFD struct {
// Init initializes a DynamicBytesFD.
func (fd *DynamicBytesFD) Init(m *vfs.Mount, d *Dentry, data vfs.DynamicBytesSource, locks *vfs.FileLocks, flags uint32) error {
fd.LockFD.Init(locks)
if err := fd.vfsfd.Init(fd, flags, m, d.VFSDentry(), &vfs.FileDescriptionOptions{}); err != nil {
if err := fd.vfsfd.Init(fd, flags, m, d.VFSDentry(),
&vfs.FileDescriptionOptions{
DenySpliceIn: true,
},
); err != nil {
return err
}
fd.inode = d.inode