On Wed, Jul 8, 2026, at 12:23, Alexander Mikhalitsyn wrote:
> On Wed, 2026-07-08 at 11:11 +0100, Peter Maydell wrote:
>> On Mon, 6 Jul 2026 at 23:44, Klaus Jensen <[email protected]> wrote:
>> > 
>> > From: Alexander Mikhalitsyn <[email protected]>
>> > 
>> > Let's block migration for cases we don't support:
>> > - SR-IOV
>> > - CMB
>> > - PMR
>> > - SPDM
>> > 
>> > No functional changes here, because NVMe migration is
>> > not supported at all as of this commit.
>> 
>> Hi; Coverity has a complaint about this commit (CID 1663673):
>
> Dear Peter,
>
>> 
>> > +#define BLOCKER_FEATURES_MAX_LEN 256
>> > +
>> > +static inline void nvme_add_blocker_feature(char *blocker_features,
>> > +                                            const char *feature)
>> > +{
>> > +    if (strlen(blocker_features) > 0) {
>> > +        g_strlcat(blocker_features, ", ", BLOCKER_FEATURES_MAX_LEN);
>> > +    }
>> > +    g_strlcat(blocker_features, feature, BLOCKER_FEATURES_MAX_LEN);
>> 
>> g_strlcat has a return value to tell us whether it managed to fit
>> all the text in, but we aren't checking it.
>> 
>> In this case it looks like that's not a big deal (it does always NUL
>> terminate even if it truncates, and we're only using the string
>> to report migration blockers), but I think it would be nicer to
>> avoid using a fixed-size char array: they're usually a bit more
>> bug-prone.
>> 
>> How about we use glib's GPtrArray and g_strjoinv() instead of
>> manually building the string? Something like:
>> 
>> 
>>     g_autoptr(GPtrArray) blocker_features = g_ptr_array_new();
>> 
>>     if (...) {
>>         g_ptr_array_add(blocker_features, "SR-IOV");
>>     }
>>     [etc...]
>> 
>> 
>>     if (blocker_features->len > 0) {
>>         g_autofree blocker_list = NULL;
>> 
>>         g_ptr_array_add(blocker_features, NULL);
>>         blocker_list = g_strjoinv(", ", (void *)blocker_features->pdata);
>>         error_setg(&n->migration_blocker,
>>                    "Migration is not supported for %s", blocker_list);
>>         if (migrate_add_blocker(&n->migration_blocker, errp) < 0) {
>>             return false;
>>         }
>>     }
>
> oh, thanks. My bad. :-( Would you like to submit your fix as a patch, or
> should I take your suggestions and send a fixup patch (or update my series)?
>

Alex,

Please send as a patch for master, you can add Suggested-by for Peter :)

Cheers,
Klaus

Reply via email to