diff options
author | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2003-02-05 17:19:34 +0000 |
---|---|---|
committer | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2003-02-05 17:19:34 +0000 |
commit | 5db3899d2e5d4b0aaf964a68ff0edf800bc2c36a (patch) | |
tree | 22e71ad6be98191729eb86d50f20961e2959e0cf /sys/dev/firewire/fwmem.c | |
parent | 2c4594131fb600ce577802dc23e9f0f69bf679d6 (diff) | |
download | src-5db3899d2e5d4b0aaf964a68ff0edf800bc2c36a.tar.gz src-5db3899d2e5d4b0aaf964a68ff0edf800bc2c36a.zip |
Fix for fwmem write part.
- fix typo
- don't need to check receive buffer.
- don't forget to free xfer on errer.
Notes
Notes:
svn path=/head/; revision=110406
Diffstat (limited to 'sys/dev/firewire/fwmem.c')
-rw-r--r-- | sys/dev/firewire/fwmem.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/sys/dev/firewire/fwmem.c b/sys/dev/firewire/fwmem.c index f19b296c23cb..f5506f43d8d2 100644 --- a/sys/dev/firewire/fwmem.c +++ b/sys/dev/firewire/fwmem.c @@ -229,7 +229,7 @@ fwmem_write_block( return NULL; fp = (struct fw_pkt *)xfer->send.buf; - fp->mode.wreqb.tcode = FWTCODE_RREQB; + fp->mode.wreqb.tcode = FWTCODE_WREQB; fp->mode.wreqb.dst = htons(xfer->dst); fp->mode.wreqb.dest_hi = htons(dst_hi); fp->mode.wreqb.dest_lo = htonl(dst_lo); @@ -297,9 +297,10 @@ fwmem_read (dev_t dev, struct uio *uio, int ioflag) err = tsleep((caddr_t)xfer, FWPRI, "fwmrq", hz); if (err !=0 || xfer->resp != 0 || xfer->recv.buf == NULL) - return EINVAL; /* XXX */ - err = uiomove(xfer->recv.buf + xfer->recv.off + 4*3, - 4, uio); + err = EIO; + else + err = uiomove(xfer->recv.buf + + xfer->recv.off + 4*3, 4, uio); } else { if (len > MAXLEN) len = MAXLEN; @@ -310,9 +311,10 @@ fwmem_read (dev_t dev, struct uio *uio, int ioflag) err = tsleep((caddr_t)xfer, FWPRI, "fwmrb", hz); if (err != 0 || xfer->resp != 0 || xfer->recv.buf == NULL) - return EINVAL; /* XXX */ - err = uiomove(xfer->recv.buf + xfer->recv.off + 4*4, - len, uio); + err = EIO; + else + err = uiomove(xfer->recv.buf + + xfer->recv.off + 4*4, len, uio); } fw_xfer_free(xfer); if (err) @@ -358,9 +360,8 @@ fwmem_write (dev_t dev, struct uio *uio, int ioflag) if (xfer == NULL) return EINVAL; err = tsleep((caddr_t)xfer, FWPRI, "fwmwq", hz); - if (err !=0 || xfer->resp != 0 - || xfer->recv.buf == NULL) - return EINVAL; /* XXX */ + if (err !=0 || xfer->resp != 0) + err = EIO; } else { if (len > MAXLEN) len = MAXLEN; @@ -372,11 +373,10 @@ fwmem_write (dev_t dev, struct uio *uio, int ioflag) if (xfer == NULL) return EINVAL; err = tsleep((caddr_t)xfer, FWPRI, "fwmwb", hz); - if (err != 0 || xfer->resp != 0 - || xfer->recv.buf == NULL) - return EINVAL; /* XXX */ - fw_xfer_free(xfer); + if (err != 0 || xfer->resp != 0) + err = EIO; } + fw_xfer_free(xfer); } return err; } |