On Wed, 2015-11-25 at 21:26 +0300, Sergei Shtylyov wrote: > On 11/25/2015 09:21 PM, Jeff Kirsher wrote: > > > From: Shannon Nelson > > > > There's really no reason to kill the kernel thread just because of > a > > little info string. This reworks the code to use snprintf's > limiting to > > assure that the string is never too long, and WARN_ON to still put > out > > a warning that we might want to look at the feature list length. > > > > Prompted by a recent Linus diatribe. > > > > Change-ID: If52ba5ca1c2344d8bf454a31bbb805eb5d2c5802 > > Signed-off-by: Shannon Nelson > > Tested-by: Andrew Bowers > > Signed-off-by: Jeff Kirsher > > --- > >   drivers/net/ethernet/intel/i40e/i40e_main.c | 34 +++++++++++++++- > ------------- > >   1 file changed, 18 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c > b/drivers/net/ethernet/intel/i40e/i40e_main.c > > index 7715c54..7a4595a 100644 > > --- a/drivers/net/ethernet/intel/i40e/i40e_main.c > > +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c > [...] > > @@ -10124,42 +10126,42 @@ static void i40e_print_features(struct > i40e_pf *pf) > > > >       buf = string; > > > > -     buf += sprintf(string, "Features: PF-id[%d] ", hw->pf_id); > > +     i += snprintf(&buf[i], REMAIN(i), "Features: PF-id[%d] ", hw- > >pf_id); > >   #ifdef CONFIG_PCI_IOV > > -     buf += sprintf(buf, "VFs: %d ", pf->num_req_vfs); > > +     i += snprintf(&buf[i], REMAIN(i), "VFs: %d ", pf- > >num_req_vfs); > >   #endif > > -     buf += sprintf(buf, "VSIs: %d QP: %d RX: %s ", > > -                    pf->hw.func_caps.num_vsis, > > -                    pf->vsi[pf->lan_vsi]->num_queue_pairs, > > -                    pf->flags & I40E_FLAG_RX_PS_ENABLED ? "PS" : > "1BUF"); > > +     i += snprintf(&buf[i], REMAIN(i), "VSIs: %d QP: %d RX: %s ", > > +                   pf->hw.func_caps.num_vsis, > > +                   pf->vsi[pf->lan_vsi]->num_queue_pairs, > > +                   pf->flags & I40E_FLAG_RX_PS_ENABLED ? "PS" : > "1BUF"); > > > >       if (pf->flags & I40E_FLAG_RSS_ENABLED) > > -             buf += sprintf(buf, "RSS "); > > +             i += snprintf(&buf[i], REMAIN(i), "RSS "); > >       if (pf->flags & I40E_FLAG_FD_ATR_ENABLED) > > -             buf += sprintf(buf, "FD_ATR "); > > +             i += snprintf(&buf[i], REMAIN(i), "FD_ATR "); > >       if (pf->flags & I40E_FLAG_FD_SB_ENABLED) { > > -             buf += sprintf(buf, "FD_SB "); > > -             buf += sprintf(buf, "NTUPLE "); > > +             i += snprintf(&buf[i], REMAIN(i), "FD_SB "); > > +             i += snprintf(&buf[i], REMAIN(i), "NTUPLE "); > >       } > >       if (pf->flags & I40E_FLAG_DCB_CAPABLE) > > -             buf += sprintf(buf, "DCB "); > > +             i += snprintf(&buf[i], REMAIN(i), "DCB "); > >   #if IS_ENABLED(CONFIG_VXLAN) > > -     buf += sprintf(buf, "VxLAN "); > > +     i += snprintf(&buf[i], REMAIN(i), "VxLAN "); > >   #endif > >       if (pf->flags & I40E_FLAG_PTP) > > -             buf += sprintf(buf, "PTP "); > > +             i += snprintf(&buf[i], REMAIN(i), "PTP "); > >   #ifdef I40E_FCOE > >       if (pf->flags & I40E_FLAG_FCOE_ENABLED) > > -             buf += sprintf(buf, "FCOE "); > > +             i += snprintf(&buf[i], REMAIN(i), "FCOE "); > >   #endif > >       if (pf->flags & I40E_FLAG_VEB_MODE_ENABLED) > > -             buf += sprintf(buf, "VEB "); > > +             i += snprintf(&buf[i], REMAIN(i), "VEPA "); > >     Not "VEB "? Nice catch Sergei, I will wait a till this afternoon to respin the patch series, just in case there are other changes needed that our validation did not catch. :-)