summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrei Vagin <avagin@google.com>2020-03-16 18:28:29 -0700
committergVisor bot <gvisor-bot@google.com>2020-03-16 18:29:58 -0700
commitb55f0e5d40c17cadf68d6238564d675ed12f8f49 (patch)
tree4c70504975ccd4eb0f03d86b5ce3216d2bbd86e8
parent2a6c4369be8d0522a1f439aa02bce0eb21d42ea2 (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.go4
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
}