summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2016-12-24 14:48:49 +0000
committeravg <avg@FreeBSD.org>2016-12-24 14:48:49 +0000
commitb806ce06cef062abf609d7943386cdcc19d35b6b (patch)
treec15dc87e423d5e140e085f1f2003e8ff2afeeee7
parentbffa1ca0c4dd974aa3539c58415911c66ea5b49e (diff)
downloadFreeBSD-src-b806ce06cef062abf609d7943386cdcc19d35b6b.zip
FreeBSD-src-b806ce06cef062abf609d7943386cdcc19d35b6b.tar.gz
MFC r308530: iicsmb: SMB_MAXBLOCKSIZE can be used again
-rw-r--r--sys/dev/iicbus/iicsmb.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/sys/dev/iicbus/iicsmb.c b/sys/dev/iicbus/iicsmb.c
index b49d93d..88af163 100644
--- a/sys/dev/iicbus/iicsmb.c
+++ b/sys/dev/iicbus/iicsmb.c
@@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$");
#include <dev/iicbus/iiconf.h>
#include <dev/iicbus/iicbus.h>
+#include <dev/smbus/smb.h>
#include <dev/smbus/smbconf.h>
#include "iicbus_if.h"
@@ -432,7 +433,7 @@ iicsmb_bwrite(device_t dev, u_char slave, char cmd, u_char count, char *buf)
};
int error;
- if (count > 32 || count == 0)
+ if (count > SMB_MAXBLOCKSIZE || count == 0)
return (SMB_EINVAL);
error = TRANSFER_MSGS(dev, msgs);
return (iic2smb_error(error));
@@ -450,12 +451,6 @@ iicsmb_bread(device_t dev, u_char slave, char cmd, u_char *count, char *buf)
};
device_t parent = device_get_parent(dev);
int error;
- u_char bufsz;
-
- /* Stash output buffer size before overwriting it. */
- bufsz = *count;
- if (bufsz == 0)
- return (SMB_EINVAL);
/* Have to do this because the command is split in two transfers. */
error = iicbus_request_bus(parent, dev, IIC_WAIT);
@@ -465,18 +460,13 @@ iicsmb_bread(device_t dev, u_char slave, char cmd, u_char *count, char *buf)
/*
* If the slave offers an empty or a too long reply,
* read one byte to generate the stop or abort.
- * XXX 32 is hardcoded until SMB_MAXBLOCKSIZE is restored
- * to sanity.
*/
- if (*count > 32 || *count == 0)
+ if (*count > SMB_MAXBLOCKSIZE || *count == 0)
block_msg[0].len = 1;
- /* If longer than the buffer, then clamp at the buffer size. */
- if (*count > bufsz)
- block_msg[0].len = bufsz;
else
block_msg[0].len = *count;
error = TRANSFER_MSGS(dev, block_msg);
- if (*count > 32 || *count == 0)
+ if (*count > SMB_MAXBLOCKSIZE || *count == 0)
error = SMB_EINVAL;
}
(void)iicbus_release_bus(parent, dev);
OpenPOWER on IntegriCloud