• M
    smbus: Fix spd_data_generate() error API violation · f26740c6
    Markus Armbruster 提交于
    The Error ** argument must be NULL, &error_abort, &error_fatal, or a
    pointer to a variable containing NULL.  Passing an argument of the
    latter kind twice without clearing it in between is wrong: if the
    first call sets an error, it no longer points to NULL for the second
    call.
    
    spd_data_generate() can pass @errp to error_setg() more than once when
    it adjusts both memory size and type.  Harmless, because no caller
    passes anything that needs adjusting.  Until the previous commit,
    sam460ex passed types that needed adjusting, but not sizes.
    
    spd_data_generate()'s contract is rather awkward:
    
        If everything's fine, return non-null and don't set an error.
    
        Else, if memory size or type need adjusting, return non-null and
        set an error describing the adjustment.
    
        Else, return null and set an error reporting why no data can be
        generated.
    
    Its callers treat the error as a warning even when null is returned.
    They don't create the "smbus-eeprom" device then.  Suspicious.
    
    Since the previous commit, only "everything's fine" can actually
    happen.  Drop the unused code and simplify the callers.  This gets rid
    of the error API violation.
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    Message-Id: <20200422134815.1584-3-armbru@redhat.com>
    f26740c6
sam460ex.c 15.6 KB