diff options
Diffstat (limited to 'module/spl')
-rw-r--r-- | module/spl/spl-kobj.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/module/spl/spl-kobj.c b/module/spl/spl-kobj.c index 4dd14ba41..b79fcb828 100644 --- a/module/spl/spl-kobj.c +++ b/module/spl/spl-kobj.c @@ -57,10 +57,15 @@ kobj_close_file(struct _buf *file) EXPORT_SYMBOL(kobj_close_file); int -kobj_read_file(struct _buf *file, char *buf, ssize_t size, offset_t off) +kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off) { - return (vn_rdwr(UIO_READ, file->vp, buf, size, off, - UIO_SYSSPACE, 0, RLIM64_INFINITY, 0, NULL)); + ssize_t resid; + + if (vn_rdwr(UIO_READ, file->vp, buf, size, (offset_t)off, + UIO_SYSSPACE, 0, 0, 0, &resid) != 0) + return (-1); + + return (size - resid); } /* kobj_read_file() */ EXPORT_SYMBOL(kobj_read_file); |