aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/firewire/fwmem.c
diff options
context:
space:
mode:
authorHidetoshi Shimokawa <simokawa@FreeBSD.org>2003-02-05 17:19:34 +0000
committerHidetoshi Shimokawa <simokawa@FreeBSD.org>2003-02-05 17:19:34 +0000
commit5db3899d2e5d4b0aaf964a68ff0edf800bc2c36a (patch)
tree22e71ad6be98191729eb86d50f20961e2959e0cf /sys/dev/firewire/fwmem.c
parent2c4594131fb600ce577802dc23e9f0f69bf679d6 (diff)
downloadsrc-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.c28
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;
}