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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 24 Mar 2014 22:58:04 -0700
From:	ebiederm@...ssion.com (Eric W. Biederman)
To:	David Miller <davem@...emloft.net>
Cc:	eric.dumazet@...il.com, netdev@...r.kernel.org,
	xiyou.wangcong@...il.com, mpm@...enic.com, satyam.sharma@...il.com
Subject:  [net-next 00/54][pull request] Using dev_kfree/consume_skb_any for functions called in multiple contexts


These changes are a result of walking through the network drivers
supporting netpoll and verifying the code paths that netpoll can cause
to be called in hard irq context use an appropriate flavor of
kfree_skb.  Either dev_kfree_skb_any or dev_consume_skb_any.

Since my last pass at this I have become aware of the small differences
between dev_kfree_skb_any and dev_consume_skb_any.
net/core/drop_monitor.c reports the dev_kfree_skb_any as a drop and
while being quite about the second.  With the weird twist that
dev_kfree_skb is unintuitively consume_skb.

As netpoll now calls the napi poll function with budget == 0, pieces of
a drivers the napi poll function that don't run when budget == 0 have
been ignored.

The most interesting change is to the atl1c which tried unsuccesfully to
tell one of it's functions which context it is called in so that it
could call dev_kfree_skb_irq or dev_kfree_skb as appropriate.  I have
just removed the extra parameter and called dev_consume_skb_any.

At 54 separate changes I will post each change as a separate patch (so
they can be reviewed) but for general sanity sake I have gathered them
all into a git branch for easy acces.

David when you are satisified with these changes please pull:

    git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/net-next.git master

Hopefully this will allow me to forget this class of error when dealing
with netpoll.

Eric

Eric W. Biederman (54):
      uml/net_kern: Call dev_consume_skb_any instead of dev_kfree_skb.
      3c509: Call dev_consume_skb_any instead of dev_kfree_skb.
      3c59x: Call dev_consume_skb_any instead of dev_kfree_skb.
      8390: Call dev_consume_skb_any instead of dev_kfree_skb.
      bfin_mac: Call dev_consume_skb_any instead of dev_kfree_skb.
      sun4i-emac: Call dev_consume_skb_any instead of dev_kfree_skb.
      am79c961a: Call dev_consume_skb_any instead of dev_kfree_skb.
      lance: Call dev_consume_skb_any instead of dev_kfree_skb.
      pcnet32: Call dev_kfree_skb_any instead of dev_kfree_skb.
      alx: Call dev_kfree_skb_any instead of dev_kfree_skb.
      atl1c: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      bnad: Call dev_kfree_skb_any instead of dev_kfree_skb.
      macb: Call dev_kfree_skb_any instead of kfree_skb.
      xgmac: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      cxgb3: Call dev_kfree/consume_skb_any instead of [dev_]kfree_skb.
      cxgb4: Call dev_kfree/consume_skb_any instead of [dev_]kfree_skb.
      cxfb4vf: Call dev_kfree/consume_skb_any instead of [dev_]kfree_skb.
      cs89x0: Call dev_consume_skb_any instead of dev_kfree_skb.
      enic: Call dev_kfree_skb_any instead of dev_kfree_skb.
      dm9000: Call dev_consume_skb_any instead of dev_kfree_skb.
      dmfe: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      uli526x: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      sundance: Call dev_kfree_skb_any instead of dev_kfree_skb.
      fec: Call dev_kfree_skb_any instead of kfree_skb.
      ucc_geth: Call dev_consume_skb_any instead of dev_kfree_skb.
      i825xx: Call dev_kfree_skb_any instead of dev_kfree_skb.
      ehea: Call dev_consume_skb_any instead of dev_kfree_skb.
      ibmveth: Call dev_consume_skb_any instead of dev_kfree_skb.
      jme: Call dev_kfree_skb_any instead of dev_kfree_skb.
      mv643xx_eth: Call dev_kfree_skb_any instead of dev_kfree_skb.
      skge: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      sky2: Call dev_kfree_skb_any instead of dev_kfree_skb.
      ksz884x: Call dev_consume_skb_any instead of dev_kfree_skb.
      s2io: Call dev_kfree_skb_any instead of dev_kfree_skb.
      vxge: Call dev_kfree_skb_any instead of dev_kfree_skb.
      forcedeth: Call dev_kfree_skb_any instead of kfree_skb.
      sc92031: Call dev_consume_skb_any instead of dev_kfree_skb.
      sis900: Call dev_kfree_skb_any instead of dev_kfree_skb.
      smc911x: Call dev_kfree_skb_any instead of dev_kfree_skb.
      smc91x: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      smsc911x: Call dev_consume_skb_any instead of dev_kfree_skb.
      stmmac: Call dev_consume_skb_any instead of dev_kfree_skb.
      sungem: Call dev_consume_skb_any instead of dev_kfree_skb.
      tilepro: Call dev_consume_skb_any instead of kfree_skb.
      spider_net: Call dev_consume_skb_any instead of dev_kfree_skb.
      via-rhine: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      via-velocity: Call dev_kfree_skb_any instead of kfree_skb.
      xilinx_emaclite: Call dev_consume_skb_any instead of dev_kfree_skb.
      vmxnet3: Call dev_kfree_skb_any instead of dev_kfree_skb.
      xen-netfront: Call dev_kfree_skb_any instead of dev_kfree_skb.
      wlags49_h2: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      staging/octeon-ethernet: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
      virtio_net: Call dev_kfree_skb_any instead of dev_kfree_skb.
      if_vlan: Call dev_kfree_skb_any instead of kfree_skb.

 arch/um/drivers/net_kern.c                        |  2 +-
 drivers/net/ethernet/3com/3c509.c                 |  2 +-
 drivers/net/ethernet/3com/3c59x.c                 |  2 +-
 drivers/net/ethernet/8390/lib8390.c               |  2 +-
 drivers/net/ethernet/adi/bfin_mac.c               |  2 +-
 drivers/net/ethernet/allwinner/sun4i-emac.c       |  2 +-
 drivers/net/ethernet/amd/7990.c                   |  2 +-
 drivers/net/ethernet/amd/am79c961a.c              |  2 +-
 drivers/net/ethernet/amd/pcnet32.c                |  2 +-
 drivers/net/ethernet/atheros/alx/main.c           |  2 +-
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c   | 20 ++++++++------------
 drivers/net/ethernet/brocade/bna/bnad.c           | 16 ++++++++--------
 drivers/net/ethernet/cadence/macb.c               |  2 +-
 drivers/net/ethernet/calxeda/xgmac.c              |  6 +++---
 drivers/net/ethernet/chelsio/cxgb3/sge.c          |  6 +++---
 drivers/net/ethernet/chelsio/cxgb4/sge.c          |  6 +++---
 drivers/net/ethernet/chelsio/cxgb4vf/sge.c        |  6 +++---
 drivers/net/ethernet/cirrus/cs89x0.c              |  2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c       |  4 ++--
 drivers/net/ethernet/davicom/dm9000.c             |  2 +-
 drivers/net/ethernet/dec/tulip/dmfe.c             |  4 ++--
 drivers/net/ethernet/dec/tulip/uli526x.c          |  4 ++--
 drivers/net/ethernet/dlink/sundance.c             |  2 +-
 drivers/net/ethernet/freescale/fec_main.c         |  2 +-
 drivers/net/ethernet/freescale/ucc_geth.c         |  2 +-
 drivers/net/ethernet/i825xx/lib82596.c            |  2 +-
 drivers/net/ethernet/ibm/ehea/ehea_main.c         |  6 +++---
 drivers/net/ethernet/ibm/ibmveth.c                |  2 +-
 drivers/net/ethernet/jme.c                        |  2 +-
 drivers/net/ethernet/marvell/mv643xx_eth.c        |  4 ++--
 drivers/net/ethernet/marvell/skge.c               |  4 ++--
 drivers/net/ethernet/marvell/sky2.c               |  2 +-
 drivers/net/ethernet/micrel/ksz884x.c             |  2 +-
 drivers/net/ethernet/neterion/s2io.c              |  6 +++---
 drivers/net/ethernet/neterion/vxge/vxge-main.c    |  8 ++++----
 drivers/net/ethernet/nvidia/forcedeth.c           |  8 ++++----
 drivers/net/ethernet/silan/sc92031.c              |  2 +-
 drivers/net/ethernet/sis/sis900.c                 |  2 +-
 drivers/net/ethernet/smsc/smc911x.c               |  2 +-
 drivers/net/ethernet/smsc/smc91x.c                |  4 ++--
 drivers/net/ethernet/smsc/smsc911x.c              |  2 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |  2 +-
 drivers/net/ethernet/sun/sungem.c                 |  2 +-
 drivers/net/ethernet/tile/tilepro.c               |  4 ++--
 drivers/net/ethernet/toshiba/spider_net.c         |  2 +-
 drivers/net/ethernet/via/via-rhine.c              |  6 +++---
 drivers/net/ethernet/via/via-velocity.c           |  2 +-
 drivers/net/ethernet/xilinx/xilinx_emaclite.c     |  2 +-
 drivers/net/virtio_net.c                          |  2 +-
 drivers/net/vmxnet3/vmxnet3_drv.c                 |  2 +-
 drivers/net/xen-netfront.c                        |  2 +-
 drivers/staging/octeon/ethernet-tx.c              |  6 +++---
 drivers/staging/wlags49_h2/wl_netdev.c            |  6 +++---
 include/linux/if_vlan.h                           |  2 +-
 54 files changed, 99 insertions(+), 103 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ