lkml.org 
[lkml]   [2006]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] I2C block read
    On Wed, 7 Jun 2006 19:49:43 +0200
    Jean Delvare wrote:

    > Hi Alexander,
    >
    > > When doing i2c block read the lenght is passed as the first
    > > byte of the buffer, so we must copy it from user otherwise temp is
    > > uninitialized.
    >
    > > --- drivers/i2c/i2c-dev.c.orig 2006-01-04 02:00:00.000000000
    > > +0200 +++ drivers/i2c/i2c-dev.c 2006-06-07
    > > 19:46:08.000000000 +0300 @@ -337,6 +337,7 @@
    > >
    > > if ((data_arg.size == I2C_SMBUS_PROC_CALL) ||
    > > (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL)
    > > ||
    > > + (data_arg.size == I2C_SMBUS_BLOCK_DATA) ||
    > > (data_arg.read_write == I2C_SMBUS_WRITE)) {
    > > if (copy_from_user(&temp, data_arg.data,
    > > datasize)) return -EFAULT;
    >
    > Nack. Firstly, your comment says I2C block read, but your code changes
    > SMBus block read. These are two different transactions. Secondly, for
    > SMBus block read, the master doesn't ask for a given number of bytes.
    > Instead, the chip decides and returns the number of (following) bytes
    > as the first byte of the read part of the transaction. Check the SMBus
    > specification.
    >
    > So your patch is not correct, sorry.


    10x. Here is the case:
    I use SMBus block read with scx200_acb as a bus it uses the lenght
    which is as i say uninitialized and tries to read a number of random bytes
    from the board i use. And it doesn't return the lenght as a first byte,
    so the drivers reads until it gets an oops. Which in turn makes me wonder
    why with this patch i correcly receive the number of bytes i pass,
    looking at the driver i can not see that it gets the lenght from the read data.
    I don't know well SMBus/I2C specs but read with buffer and no lenght
    doesn't look sane to me. So how should this be fixed?

    --
    have fun,
    alex




    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-06-07 20:09    [W:0.025 / U:61.168 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site