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?
--- 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;
 
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to