diff options
author | Ayush Ranjan <ayushranjan@google.com> | 2019-07-30 19:42:50 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-07-30 19:43:59 -0700 |
commit | 5afa642deb190dbacee225d05f58de69f775d3f3 (patch) | |
tree | a086d06ea3193f72770f5ca7620dfc8979e9d531 /pkg/sentry/fs/ext/symlink.go | |
parent | 9fbe984dc13f1af42bf3a73b696f7358794dd2d4 (diff) |
ext: Migrate from using fileReader custom interface to using io.Reader.
It gets rid of holding state of the io.Reader offset (which is anyways held by
the vfs.FileDescriptor struct. It is also odd using a io.Reader becuase we
using io.ReaderAt to interact with the device. So making a io.ReaderAt wrapper
makes more sense.
Most importantly, it gets rid of the complexity of extracting the file reader
from a regular file implementation and then using it. Now we can just use the
regular file implementation as a reader which is more intuitive.
PiperOrigin-RevId: 260846927
Diffstat (limited to 'pkg/sentry/fs/ext/symlink.go')
-rw-r--r-- | pkg/sentry/fs/ext/symlink.go | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/pkg/sentry/fs/ext/symlink.go b/pkg/sentry/fs/ext/symlink.go index 6a55c1a7b..9f498d989 100644 --- a/pkg/sentry/fs/ext/symlink.go +++ b/pkg/sentry/fs/ext/symlink.go @@ -15,8 +15,6 @@ package ext import ( - "io" - "gvisor.dev/gvisor/pkg/syserror" ) @@ -28,7 +26,7 @@ type symlink struct { // newSymlink is the symlink constructor. It reads out the symlink target from // the inode (however it might have been stored). -func newSymlink(dev io.ReaderAt, blkSize uint64, inode inode) (*symlink, error) { +func newSymlink(inode inode) (*symlink, error) { var file *symlink var link []byte @@ -39,14 +37,13 @@ func newSymlink(dev io.ReaderAt, blkSize uint64, inode inode) (*symlink, error) link = inode.diskInode.Data()[:size] } else { // Create a regular file out of this inode and read out the target. - regFile, err := newRegularFile(dev, blkSize, inode) + regFile, err := newRegularFile(inode) if err != nil { return nil, err } link = make([]byte, size) - reader := regFile.impl.getFileReader(dev, blkSize, 0) - if _, err := io.ReadFull(reader, link); err != nil { + if n, _ := regFile.impl.ReadAt(link, 0); uint64(n) < size { return nil, syserror.EIO } } |