[PATCH v7 03/14] ASoC: Intel: catpt: Add IPC message handlers
Andy Shevchenko
andriy.shevchenko at linux.intel.com
Mon Sep 21 20:41:29 CEST 2020
On Mon, Sep 21, 2020 at 06:13:59PM +0000, Rojewski, Cezary wrote:
> On 2020-09-21 2:59 PM, Andy Shevchenko wrote:
> > On Mon, Sep 21, 2020 at 01:54:13PM +0200, Cezary Rojewski wrote:
...
> >> + for (i = j = 0; i < FW_INFO_SIZE_MAX; i++)
> >> + if (cdev->ipc.config.fw_info[i] == ' ')
> >> + if (++j == 4)
> >> + break;
> >
> >> + for (j = ++i; j < FW_INFO_SIZE_MAX && j - i < 20; j++) {
> >
> > This should have static_assert() at the place where you define both constants
> > (2nd is mentioned above 20).
> >
> >> + if (cdev->ipc.config.fw_info[j] == ' ')
> >> + break;
> >> + *(pos + j - i) = cdev->ipc.config.fw_info[j];
> >> + }
> >> + pos += 20;
> >
> > These two for-loops should have some comment to explain what's going on.
> >
>
> Actually, after poking my FW friends again I realized that it's just
> dumping 20chars from "hash" segment of fw_info (struct catpt_fw_ready,
> field: fw_info[]).
>
> So, this could be replaced by:
>
> /* navigate to fifth info segment (fw hash) */
> for (i = j = 0; i < FW_INFO_SIZE_MAX; i++)
> /* info segments are separated by space each */
> if (cdev->ipc.config.fw_info[i] == ' ')
> if (++j == 4)
> break;
...and this is repeating strnchr() / strnchrnul().
With the questions "what if...":
- nul in the middle of this?
- less than 4 spaces found?
> memcpy(pos, &cdev->ipc.config.fw_info[++i], CATPT_DUMP_HASH_SIZE);
> pos += CATPT_DUMP_HASH_SIZE;
>
>
> Existing for-loops were based on internal solution. Half of the code
> isn't needed afterall..
--
With Best Regards,
Andy Shevchenko
More information about the Alsa-devel
mailing list