You need to sign in or sign up before continuing.
  • Maurizio Lombardi's avatar
    bnx2fc: do not add shared skbs to the fcoe_rx_list · 01a4cc4d
    Maurizio Lombardi authored
    In some cases, the fcoe_rx_list may contains multiple instances
    of the same skb (the so called "shared skbs").
    
    the bnx2fc_l2_rcv thread is a loop that extracts a skb from the list,
    modifies (and destroys) its content and then proceed to the next one.
    The problem is that if the skb is shared, the remaining instances will
    be corrupted.
    
    The solution is to use skb_share_check() before adding the skb to the
    fcoe_rx_list.
    
    [ 6286.808725] ------------[ cut here ]------------
    [ 6286.808729] WARNING: at include/scsi/fc_frame.h:173 bnx2fc_l2_rcv_thread+0x425/0x450 [bnx2fc]()
    [ 6286.808748] Modules linked in: bnx2x(-) mdio dm_service_time bnx2fc cnic uio fcoe libfcoe 8021q garp stp mrp libfc llc scsi_transport_fc scsi_tgt sg iTCO_wdt iTCO_vendor_support coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul crc32c_intel e1000e ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper ptp cryptd hpilo serio_raw hpwdt lpc_ich pps_core ipmi_si pcspkr mfd_cor...
    01a4cc4d
bnx2fc_fcoe.c 71.9 KB