Thanks for the review!  I’ll send the v2 patch.

Jian.

> 2026年3月3日 21:50,Corey Minyard <[email protected]> 写道:
> 
> On Mon, Mar 02, 2026 at 02:17:46PM +0800, Jian Zhang wrote:
>> A valid IPMI over SSIF response must contain at least three bytes
>> (NetFn/LUN, Command and Completion Code).
>> 
>> Some DMA-only I2C controllers may return short reads instead of a
>> proper NACK when the response is not ready. Treat such short reads
>> as incomplete and retry until a full response is received.
> 
> Well that's unfriendly of them.
> 
> Anyway, I see the issue.  I would ask a couple of things:
> 
> Can you add a comment before this "if" statement so people in the future
> know why it's this way?  Otherwise it's a bit mysterious.
> 
> Wouldn't the i2c_smbus_read_block_data() in ipmi_ssif_thread() have the
> same issue?  We should fix all of these if so.
> 
> Thanks,
> 
> -corey
> 
>> 
>> Signed-off-by: Jian Zhang <[email protected]>
>> ---
>> drivers/char/ipmi/ipmi_ssif.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
>> index 37a5cb5c53f1..64ee939a7a4b 100644
>> --- a/drivers/char/ipmi/ipmi_ssif.c
>> +++ b/drivers/char/ipmi/ipmi_ssif.c
>> @@ -1300,7 +1300,7 @@ static int read_response(struct i2c_client *client, 
>> unsigned char *resp)
>> while (retry_cnt > 0) {
>> ret = i2c_smbus_read_block_data(client, SSIF_IPMI_RESPONSE,
>> resp);
>> - if (ret > 0)
>> + if (ret >= 3)
>> break;
>> msleep(SSIF_MSG_MSEC);
>> retry_cnt--;
>> -- 
>> 2.20.1


_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to