minor data-typing error in 8.1 fs/devfs/devfs_vnops.c

perryh@pluto.rain.com
Mon, 07 Feb 2011 09:01:23 -0000

Noticed while digging through devfs_read_f() and devfs_write_f() in
the course of investigating some unexpected (by me) geom behavior:

    ...
    int ioflag, error, resid;
    ...
    resid = uio->uio_resid;
    ...
    if (uio->uio_resid != resid || ...

IOW resid (an int) is being assigned from and compared with
uio->uio_resid (an ssize_t).

I suppose it's probably harmless on any arch where an (int) is at
least as large as an (ssize_t), but strictly speaking it does look
like a bug -- or am I missing something?
-------------- next part --------------
--- fs/devfs/devfs_vnops.c-81R	Sun Jun 13 19:09:06 2010
+++ -	Sun Feb  6 23:58:34 2011
@@ -1046,7 +1046,8 @@
 devfs_read_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags,
struct thread *td)
 {
 	struct cdev *dev;
-	int ioflag, error, resid;
+	int ioflag, error;
+	ssize_t resid;
 	struct cdevsw *dsw;
 	struct file *fpop;

@@ -1489,7 +1490,8 @@
 devfs_write_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags,
struct thread *td)
 {
 	struct cdev *dev;
-	int error, ioflag, resid;
+	int error, ioflag;
+	ssize_t resid;
 	struct cdevsw *dsw;
 	struct file *fpop;