[PATCH 8/8] staging: ks7010: factor out firmware copy process into ks7010_copy_firmware
Sergio Paracuellos
sergio.paracuellos at gmail.com
Tue Apr 3 10:10:38 UTC 2018
On Tue, Apr 3, 2018 at 11:52 AM, Dan Carpenter <dan.carpenter at oracle.com> wrote:
> On Fri, Mar 30, 2018 at 05:13:21PM +0200, Sergio Paracuellos wrote:
>> @@ -686,32 +673,61 @@ static int ks7010_upload_firmware(struct ks_sdio_card *card)
>> }
>> if (size == 0)
>> break;
>> +
>
> There are a few unrelated white space changes. This one is easy because
> it's a blank line
The unrelated changes are because code has been moved to a new
function and I reorder
here a bit the code. Because they are minor changes in the new
function I though it just
be ok to do this. Obviously it seems I was wrong :-).
>
>> memcpy(rom_buf, fw_entry->data + n, size);
>>
>> offset = n;
>> - ret = ks7010_sdio_update_index(priv, KS7010_IRAM_ADDRESS + offset);
>> + ret = ks7010_sdio_update_index(priv,
>> + KS7010_IRAM_ADDRESS + offset);
>
> but this one eats my review time to have to look at each letter to see
> what the difference is and how it relates to factoring out the function.
> I've marked all the unrelated white space changes. Please, move them to
> a different patch when you redo these.
>
>> if (ret)
>> - goto release_firmware;
>> + goto copy_error;
>
> Ideally, the label name would tell me what the goto does. This label
> name is based on the function name but that's useless because, of course
> the label is going to be in the same function as the goto. That's a
> given. A better name would be: "goto free_rom_buf;".
>
>>
>> ret = ks7010_sdio_write(priv, DATA_WINDOW, rom_buf, size);
>> if (ret)
>> - goto release_firmware;
>> + goto copy_error;
>>
>> - ret = ks7010_sdio_data_compare(priv, DATA_WINDOW, rom_buf, size);
>> + ret = ks7010_sdio_data_compare(priv,
>> + DATA_WINDOW, rom_buf, size);
>
> Unrelated change.
>
>> if (ret)
>> - goto release_firmware;
>> + goto copy_error;
>>
>> n += size;
>>
>> } while (size);
>>
>> - ret = ks7010_sdio_writeb(priv, GCR_A, GCR_A_REMAP);
>> + return ks7010_sdio_writeb(priv, GCR_A, GCR_A_REMAP);
>
> You're leaking "rom_buf" here. It needs to be:
>
> ret = ks7010_sdio_writeb(priv, GCR_A, GCR_A_REMAP);
True, thanks for points me out this. I fix this and the label and
resend v2 for this.
>
> free_rom_buf:
> kfree(rom_buf);
> return ret;
>
>> +
>> +copy_error:
>> + kfree(rom_buf);
>> + return ret;
>> +}
>> +
>> +static int ks7010_upload_firmware(struct ks_sdio_card *card)
>> +{
>> + struct ks_wlan_private *priv = card->priv;
>> + unsigned int n;
>> + int ret;
>> + const struct firmware *fw_entry = NULL;
>> +
>> + sdio_claim_host(card->func);
>> +
>> + if (ks7010_is_firmware_running(priv, &ret)) {
>> + netdev_dbg(priv->net_dev, "MAC firmware running ...\n");
>> + goto release_host;
>> + }
>> +
>> + ret = request_firmware(&fw_entry, ROM_FILE,
>> + &priv->ks_sdio_card->func->dev);
>> + if (ret)
>> + goto release_host;
>> +
>> + ret = ks7010_copy_firmware(priv, fw_entry);
>> if (ret)
>> goto release_firmware;
>>
>> /* Firmware running check */
>> for (n = 0; n < 50; ++n) {
>> - mdelay(10); /* wait_ms(10); */
>> + mdelay(10);
>
> Unrelated change.
Thanks for the review, Dan.
>
> regards,
> dan carpenter
Best regards,
Sergio Paracuellos
More information about the devel
mailing list