All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Assmann <sassmann@kpanic.de>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH] igb: fix NULL derefs due to skipped SR-IOV enabling
Date: Mon, 19 Oct 2015 12:50:39 +0200	[thread overview]
Message-ID: <5624CAFF.4060400@kpanic.de> (raw)
In-Reply-To: <5624E0C102000078000AC476@prv-mh.provo.novell.com>

On 19.10.2015 12:23, Jan Beulich wrote:
> The combined effect of commits 6423fc3416 ("igb: do not re-init SR-IOV
> during probe") and ceee3450b3 ("igb: make sure SR-IOV init uses the
> right number of queues") causes VFs no longer getting set up, leading
> to NULL pointer dereferences due to the adapter's ->vf_data being NULL
> while ->vfs_allocated_count is non-zero. The first commit not only
> neglected the side effect of igb_sriov_reinit() that the second commit
> tried to account for, but also that of setting IGB_FLAG_HAS_MSIX,
> without which igb_enable_sriov() is effectively a no-op. Calling
> igb_{,re}set_interrupt_capability() as done here seems to address this,
> but I'm not sure whether this is better than sinply reverting the other
> two commits.

Jan,

this should already be fixed by the following net-next commit
cbfe360a1541a32e9e28f8f8ac925d2b7979d767 igb: assume MSI-X interrupts during initialization

  Stefan

> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Cc: Stefan Assmann <sassmann@kpanic.de>
> Cc: Todd Fujinaka <todd.fujinaka@intel.com>
> Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Cc: Shannon Nelson <shannon.nelson@intel.com>
> Cc: Carolyn Wyborny <carolyn.wyborny@intel.com>
> Cc: Don Skidmore <donald.c.skidmore@intel.com>
> Cc: Matthew Vick <matthew.vick@intel.com>
> Cc: John Ronciak <john.ronciak@intel.com>
> Cc: Mitch Williams <mitch.a.williams@intel.com>
> ---
> As a side note, while looking at all the interactions here it seems
> suspicious to me that igb_request_msix() failure does not lead to
> SR-IOV being disabled on the device, despite IGB_FLAG_HAS_MSIX being
> set being a prereq to it as explained above.
> ---
>  drivers/net/ethernet/intel/igb/igb_main.c |    8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> --- 4.3-rc6/drivers/net/ethernet/intel/igb/igb_main.c
> +++ 4.3-rc6-IGB-VF-setup/drivers/net/ethernet/intel/igb/igb_main.c
> @@ -2856,6 +2856,14 @@ static void igb_probe_vfs(struct igb_ada
>  	if ((hw->mac.type == e1000_i210) || (hw->mac.type == e1000_i211))
>  		return;
>  
> +	/*
> +	 * Of the below we really only want the effect of getting
> +	 * IGB_FLAG_HAS_MSIX set (if available), without which
> +	 * igb_enable_sriov() has no effect.
> +	 */
> +	igb_set_interrupt_capability(adapter, true);
> +	igb_reset_interrupt_capability(adapter);
> +
>  	pci_sriov_set_totalvfs(pdev, 7);
>  	igb_enable_sriov(pdev, max_vfs);
>  
> 
> 
> 


  reply	other threads:[~2015-10-19 10:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-19 10:23 [Intel-wired-lan] [PATCH] igb: fix NULL derefs due to skipped SR-IOV enabling Jan Beulich
2015-10-19 10:50 ` Stefan Assmann [this message]
2015-12-03 23:36 ` Brown, Aaron F

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5624CAFF.4060400@kpanic.de \
    --to=sassmann@kpanic.de \
    --cc=intel-wired-lan@osuosl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.