lkml.org 
[lkml]   [2006]   [Aug]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 05/23] scx200_acb: Fix the block transactions
    -stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Jean Delvare <khali@linux-fr.org>

    The scx200_acb i2c bus driver pretends to support SMBus block
    transactions, but in fact it implements the more simple I2C block
    transactions. Additionally, it lacks sanity checks on the length
    of the block transactions, which could lead to a buffer overrun.

    This fixes an oops reported by Alexander Atanasov:
    http://marc.theaimsgroup.com/?l=linux-kernel&m=114970382125094

    Thanks to Ben Gardner for fixing my bugs :)

    Signed-off-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/i2c/busses/scx200_acb.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- linux-2.6.17.7.orig/drivers/i2c/busses/scx200_acb.c
    +++ linux-2.6.17.7/drivers/i2c/busses/scx200_acb.c
    @@ -304,8 +304,12 @@ static s32 scx200_acb_smbus_xfer(struct
    buffer = (u8 *)&cur_word;
    break;

    - case I2C_SMBUS_BLOCK_DATA:
    + case I2C_SMBUS_I2C_BLOCK_DATA:
    + if (rw == I2C_SMBUS_READ)
    + data->block[0] = I2C_SMBUS_BLOCK_MAX; /* For now */
    len = data->block[0];
    + if (len == 0 || len > I2C_SMBUS_BLOCK_MAX)
    + return -EINVAL;
    buffer = &data->block[1];
    break;

    @@ -369,7 +373,7 @@ static u32 scx200_acb_func(struct i2c_ad
    {
    return I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE |
    I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA |
    - I2C_FUNC_SMBUS_BLOCK_DATA;
    + I2C_FUNC_SMBUS_I2C_BLOCK;
    }

    /* For now, we only handle combined mode (smbus) */
    --
    -
    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-08-04 07:55    [W:0.021 / U:149.844 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site