lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <1469131981.6600.4.camel@intel.com> Date: Thu, 21 Jul 2016 20:13:03 +0000 From: "Keller, Jacob E" <jacob.e.keller@...el.com> To: "davem@...emloft.net" <davem@...emloft.net>, "Kirsher, Jeffrey T" <jeffrey.t.kirsher@...el.com>, "sergei.shtylyov@...entembedded.com" <sergei.shtylyov@...entembedded.com> CC: "nhorman@...hat.com" <nhorman@...hat.com>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, "guru.anbalagane@...cle.com" <guru.anbalagane@...cle.com>, "sassmann@...hat.com" <sassmann@...hat.com>, "jogreene@...hat.com" <jogreene@...hat.com> Subject: ~~ On Thu, 2016-07-21 at 13:51 +0300, Sergei Shtylyov wrote: > Hello. > > On 7/21/2016 1:23 AM, Jeff Kirsher wrote: > > > From: Jacob Keller <jacob.e.keller@...el.com> > > > > Sometimes, a VF driver will lose PCIe address access, such as due > > to > > a PF FLR event. In fm10k_detach_subtask, poll and check whether the > > PCIe register space is active again and restore the device when it > > has. > > > > Signed-off-by: Jacob Keller <jacob.e.keller@...el.com> > > Tested-by: Krishneil Singh <Krishneil.k.singh@...el.com> > > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@...el.com> > > --- > > drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > index 5e40460..d4ccb2a 100644 > > --- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > +++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > @@ -123,11 +123,24 @@ static void fm10k_service_timer(unsigned long > > data) > > static void fm10k_detach_subtask(struct fm10k_intfc *interface) > > { > > struct net_device *netdev = interface->netdev; > > + u32 __iomem *hw_addr; > > + u32 value; > > > > /* do nothing if device is still present or hw_addr is set > > */ > > if (netif_device_present(netdev) || interface->hw.hw_addr) > > return; > > > > + /* check the real address space to see if we've recovered > > */ > > + hw_addr = READ_ONCE(interface->uc_addr); > > + value = readl(hw_addr); > > + if ((~value)) { > > Why these double parens? > You're right it doesn't need them. I think at one point the check was "!(~value)" in some other portion of code, and likely got copied by mistake. Thanks, Jake > [...] > > MBR, Sergei >
Powered by blists - more mailing lists