• Rasmus Villemoes's avatar
    scsi: bnx2i: Make bnx2i_process_iscsi_error() simpler and more robust · adb25343
    Rasmus Villemoes authored
    Instead of strcpy'ing into a stack buffer, just let additional_notice point
    to a string literal living in .rodata. This is better in a few ways:
    
     - Smaller .text - instead of gcc compiling the strcpys as a bunch of
       immediate stores (effectively encoding the string literal in the
       instruction stream), we only pay the price of storing the literal in
       .rodata.
    
     - Faster, because there's no string copying.
    
     - Smaller stack usage (with my compiler, 72 bytes instead of 176 for the
       sole caller, bnx2i_indicate_kcqe)
    
    Moreover, it's currently possible for additional_notice[] to get used
    uninitialized, so some random stack garbage would be passed to printk() -
    in the worst case without any '\0' anywhere in those 64 bytes. That could
    be fixed by initializing additional_notice[0], but the same is achieved
    here by initializing the new pointer variable to "".
    
    Also give the message pointer a similar treatment - there's no point making
    temporary copies on the stack of those two strings.
    
    Link: https://lore.kernel.org/r/20210310221602.2494422-1-linux@rasmusvillemoes.dkSigned-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    adb25343
bnx2i_hwi.c 82.1 KB