diff options
author | Andrei Vagin <avagin@google.com> | 2020-03-16 18:28:29 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-03-16 18:29:58 -0700 |
commit | b55f0e5d40c17cadf68d6238564d675ed12f8f49 (patch) | |
tree | 4c70504975ccd4eb0f03d86b5ce3216d2bbd86e8 | |
parent | 2a6c4369be8d0522a1f439aa02bce0eb21d42ea2 (diff) |
fdtable: don't try to zap fdtable entry if close is called for non-existing fd
FDTable.setAll is used to zap entries, but it grows the table up to
a specified fd.
Reported-by: syzbot+9e281b0750d2d4caa190@syzkaller.appspotmail.com
PiperOrigin-RevId: 301280000
-rw-r--r-- | pkg/sentry/kernel/fd_table.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/pkg/sentry/kernel/fd_table.go b/pkg/sentry/kernel/fd_table.go index 7de2e509e..dddc28d5a 100644 --- a/pkg/sentry/kernel/fd_table.go +++ b/pkg/sentry/kernel/fd_table.go @@ -536,7 +536,9 @@ func (f *FDTable) Remove(fd int32) (*fs.File, *vfs.FileDescription) { case orig2 != nil: orig2.IncRef() } - f.setAll(fd, nil, nil, FDFlags{}) // Zap entry. + if orig != nil || orig2 != nil { + f.setAll(fd, nil, nil, FDFlags{}) // Zap entry. + } return orig, orig2 } |