Skip to content
This repository has been archived by the owner on Feb 26, 2020. It is now read-only.

Commit

Permalink
kobj_read_file: Return -1 on vn_rdwr() error
Browse files Browse the repository at this point in the history
I noticed that the SPL implementation of kobj_read_file is not correct
after comparing it with the userland implementation of kobj_read_file()
in openzfs/zfs#4104.

Note that we no longer pass RLIM64_INFINITY with this, but our vn_rdwr
implementation did not support it anyway, so there is no difference.

Signed-off-by: Richard Yao <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #513
  • Loading branch information
ryao authored and behlendorf committed Jan 23, 2016
1 parent 7323da1 commit be29e6a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
4 changes: 2 additions & 2 deletions include/sys/kobj.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ typedef struct _buf buf_t;

extern struct _buf *kobj_open_file(const char *name);
extern void kobj_close_file(struct _buf *file);
extern int kobj_read_file(struct _buf *file, char *buf,
ssize_t size, offset_t off);
extern int kobj_read_file(struct _buf *file, char *buf, unsigned size,
unsigned off);
extern int kobj_get_filesize(struct _buf *file, uint64_t *size);

#endif /* SPL_KOBJ_H */
11 changes: 8 additions & 3 deletions module/spl/spl-kobj.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit be29e6a

Please sign in to comment.