RE: [PATCH v2] scsi/cxgbi/libcxgbi: make sure sg is present before calling sg_next()

From: Varun Prakash
Date: Thu Nov 17 2022 - 08:31:05 EST


>>>>> diff --git a/drivers/scsi/cxgbi/libcxgbi.c
>>>>> b/drivers/scsi/cxgbi/libcxgbi.c index af281e271f88..2ff9810f42a9
>>>>> 100644
>>>>> --- a/drivers/scsi/cxgbi/libcxgbi.c
>>>>> +++ b/drivers/scsi/cxgbi/libcxgbi.c
>>>>> @@ -1196,8 +1196,7 @@ void cxgbi_ddp_set_one_ppod(struct
>>>>> cxgbi_pagepod *ppod,
>>>>>         if (offset == len) {
>>>>>           offset = 0;
>>>>> -        sg = sg_next(sg);
>>>>> -        if (sg) {
>>>>> +        if (sg && (sg = sg_next(sg))) {
>>>>>               addr = sg_dma_address(sg);
>>>>>               len = sg_dma_len(sg);
>>>>>           }
>>>>
>>>> Is cxgbit_set_one_ppod the same function but it already has the
>>>> extra sg check?
>>>
>>> Good catch! Certainly looks that way, albeit with messier indentation.
>>>
>>>> Should it be a libcxgb function in libcxgb_ppm.c?
>>>
>>> That makes sense to me. Should I just move both there?
>>
>> I think you can move one function with a fix to libcxgb and kill the second one.
>> Name the new function to cxgb_ddp_set_one_ppod then have cxgbi and cxgbt use it.
>
>Yeah, thah's pretty much what I meant. Thank you!

Yes, you can move cxgbit_set_one_ppod() from cxgbit_ddp.c to libcxgb_ppm.c and
rename it to cxgbi_ppm_set_one_ppod() and remove cxgbi_ddp_set_one_ppod()
from libcxgbi.c.