• Johannes Berg's avatar
    iwlagn: fix firmware loading TLV error path · 704da534
    Johannes Berg authored
    gcc complains about the firmware loading:
    
    iwl-agn.c: In function ‘iwlagn_load_firmware’:
    iwl-agn.c:1860: warning: ‘tlv_len’ may be used uninitialized in this function
    iwl-agn.c:1861: warning: ‘tlv_type’ may be used uninitialized in this function
    iwl-agn.c:1862: warning: ‘tlv_data’ may be used uninitialized in this function
    
    This is almost correct but we do do break out of the TLV
    parsing loop when setting ret. However, the code is hard
    to follow, and clearly even the compiler is having issues
    with it too.
    
    Additionally, however, the current code is wrong. If there
    is a TLV length check error, the code will report
    	invalid TLV after parsing: ...
    because "len" will still be non-zero as we broke out of
    the loop.
    
    So to remove the warning and fix that issue, make the code
    easier to read by doing length checking with an error label.
    As a result, we can completely remove the "ret" variable.
    
    Also, while at it, remove the "fixed_tlv_size" variable
    since each TLV type has its own specified length, it just
    happens that we have only variable length, flags (0 length)
    and u32 TLVs right now. It should still be checked with more
    explicit length checks to make it easier to understand.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
    704da534
iwl-agn.c 129 KB