• Arnd Bergmann's avatar
    ipmi: ipmb: don't allocate i2c_client on stack · 21feadd0
    Arnd Bergmann authored
    The i2c_client structure can be fairly large, which leads to
    a warning about possible kernel stack overflow in some
    configurations:
    
    drivers/char/ipmi/ipmb_dev_int.c:115:16: error: stack frame size of 1032 bytes in function 'ipmb_write' [-Werror,-Wframe-larger-than=]
    
    There is no real reason to even declare an i2c_client, as we can simply
    call i2c_smbus_xfer() directly instead of the i2c_smbus_write_block_data()
    wrapper.
    
    Convert the ipmb_write() to use an open-coded i2c_smbus_write_block_data()
    here, without changing the behavior.
    
    It seems that there is another problem with this implementation;
    when user space passes a length of more than I2C_SMBUS_BLOCK_MAX
    bytes, all the rest is silently ignored. This should probably be
    addressed in a separate patch, but I don't know what the intended
    behavior is here.
    
    Fixes: 51bd6f29 ("Add support for IPMB driver")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Message-Id: <20190619125045.918700-1-arnd@arndb.de>
    Acked-by: default avatarAsmaa Mnebhi <Asmaa@mellanox.com>
    [Broke up a line >80 characters on i2c_smbus_xfer().]
    Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
    21feadd0
ipmb_dev_int.c 8.8 KB