1. 31 10月, 2014 1 次提交
  2. 26 10月, 2014 3 次提交
  3. 02 10月, 2014 1 次提交
  4. 01 10月, 2014 5 次提交
  5. 13 9月, 2014 1 次提交
  6. 10 9月, 2014 1 次提交
  7. 09 9月, 2014 1 次提交
    • D
      sunvnet - add missing rmb() for sunvnet driver · 78dcff7b
      David L Stevens 提交于
      The sunvnet driver does not have an rmb() in the ring consumer corresponding
      to the wmb() in the producer. According to Documentation/memory-barriers.txt:
      
      "When dealing with CPU-CPU interactions, certain types of memory barrier should
      always be paired.  A lack of appropriate pairing is almost certainly an error."
      
      In cases where an rmb() is not a no-op and a consumer is removing data from
      the ring while a producer is adding new entries, a load reorder would allow
      
      CPU1						CPU2
      ----						----
      						LOAD desc.size [e.g]
      STORE desc.size
      <wmb>
      set desc.hdr.state = VIO_DESC_READY
      						LOAD desc.hdr.state
      						[because VIO_DESC_READY, use
      						 old desc.size, already loaded
      						 out of order]
      
      [CPU2 has reordered apparently unrelated LOADs]
      
      To ensure other desc fields are not loaded before checking VIO_DESC_READY, we
      need an rmb() between the check and desc data accesses.
      
      I've also moved the viodbg() call to after the rmb() so that it, too, has
      current descriptor data even with reordering, which has the side effect that
      it won't print anything for descriptors that are not VIO_DESC_READY as before.
      That's a) probably a good thing, since the fields are not necessarily set and,
      b) better than adding another rmb() just for viodbg().
      
      This would not be possible if strict-ordering is enforced, but then the
      memory barriers should be no-ops in that case.
      Signed-off-by: NDavid L Stevens <david.stevens@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      78dcff7b
  8. 14 8月, 2014 3 次提交
  9. 29 7月, 2014 1 次提交
  10. 17 7月, 2014 1 次提交
  11. 01 1月, 2014 1 次提交
  12. 11 7月, 2013 1 次提交
  13. 28 2月, 2013 1 次提交
    • S
      hlist: drop the node parameter from iterators · b67bfe0d
      Sasha Levin 提交于
      I'm not sure why, but the hlist for each entry iterators were conceived
      
              list_for_each_entry(pos, head, member)
      
      The hlist ones were greedy and wanted an extra parameter:
      
              hlist_for_each_entry(tpos, pos, head, member)
      
      Why did they need an extra pos parameter? I'm not quite sure. Not only
      they don't really need it, it also prevents the iterator from looking
      exactly like the list iterator, which is unfortunate.
      
      Besides the semantic patch, there was some manual work required:
      
       - Fix up the actual hlist iterators in linux/list.h
       - Fix up the declaration of other iterators based on the hlist ones.
       - A very small amount of places were using the 'node' parameter, this
       was modified to use 'obj->member' instead.
       - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
       properly, so those had to be fixed up manually.
      
      The semantic patch which is mostly the work of Peter Senna Tschudin is here:
      
      @@
      iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;
      
      type T;
      expression a,c,d,e;
      identifier b;
      statement S;
      @@
      
      -T b;
          <+... when != b
      (
      hlist_for_each_entry(a,
      - b,
      c, d) S
      |
      hlist_for_each_entry_continue(a,
      - b,
      c) S
      |
      hlist_for_each_entry_from(a,
      - b,
      c) S
      |
      hlist_for_each_entry_rcu(a,
      - b,
      c, d) S
      |
      hlist_for_each_entry_rcu_bh(a,
      - b,
      c, d) S
      |
      hlist_for_each_entry_continue_rcu_bh(a,
      - b,
      c) S
      |
      for_each_busy_worker(a, c,
      - b,
      d) S
      |
      ax25_uid_for_each(a,
      - b,
      c) S
      |
      ax25_for_each(a,
      - b,
      c) S
      |
      inet_bind_bucket_for_each(a,
      - b,
      c) S
      |
      sctp_for_each_hentry(a,
      - b,
      c) S
      |
      sk_for_each(a,
      - b,
      c) S
      |
      sk_for_each_rcu(a,
      - b,
      c) S
      |
      sk_for_each_from
      -(a, b)
      +(a)
      S
      + sk_for_each_from(a) S
      |
      sk_for_each_safe(a,
      - b,
      c, d) S
      |
      sk_for_each_bound(a,
      - b,
      c) S
      |
      hlist_for_each_entry_safe(a,
      - b,
      c, d, e) S
      |
      hlist_for_each_entry_continue_rcu(a,
      - b,
      c) S
      |
      nr_neigh_for_each(a,
      - b,
      c) S
      |
      nr_neigh_for_each_safe(a,
      - b,
      c, d) S
      |
      nr_node_for_each(a,
      - b,
      c) S
      |
      nr_node_for_each_safe(a,
      - b,
      c, d) S
      |
      - for_each_gfn_sp(a, c, d, b) S
      + for_each_gfn_sp(a, c, d) S
      |
      - for_each_gfn_indirect_valid_sp(a, c, d, b) S
      + for_each_gfn_indirect_valid_sp(a, c, d) S
      |
      for_each_host(a,
      - b,
      c) S
      |
      for_each_host_safe(a,
      - b,
      c, d) S
      |
      for_each_mesh_entry(a,
      - b,
      c, d) S
      )
          ...+>
      
      [akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
      [akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
      [akpm@linux-foundation.org: checkpatch fixes]
      [akpm@linux-foundation.org: fix warnings]
      [akpm@linux-foudnation.org: redo intrusive kvm changes]
      Tested-by: NPeter Senna Tschudin <peter.senna@gmail.com>
      Acked-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: NSasha Levin <sasha.levin@oracle.com>
      Cc: Wu Fengguang <fengguang.wu@intel.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Gleb Natapov <gleb@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b67bfe0d
  14. 09 1月, 2013 1 次提交
  15. 07 1月, 2013 1 次提交
  16. 08 12月, 2012 1 次提交
  17. 04 12月, 2012 1 次提交
  18. 11 5月, 2012 1 次提交
    • J
      drivers/net: Convert compare_ether_addr to ether_addr_equal · 2e42e474
      Joe Perches 提交于
      Use the new bool function ether_addr_equal to add
      some clarity and reduce the likelihood for misuse
      of compare_ether_addr for sorting.
      
      Done via cocci script:
      
      $ cat compare_ether_addr.cocci
      @@
      expression a,b;
      @@
      -	!compare_ether_addr(a, b)
      +	ether_addr_equal(a, b)
      
      @@
      expression a,b;
      @@
      -	compare_ether_addr(a, b)
      +	!ether_addr_equal(a, b)
      
      @@
      expression a,b;
      @@
      -	!ether_addr_equal(a, b) == 0
      +	ether_addr_equal(a, b)
      
      @@
      expression a,b;
      @@
      -	!ether_addr_equal(a, b) != 0
      +	!ether_addr_equal(a, b)
      
      @@
      expression a,b;
      @@
      -	ether_addr_equal(a, b) == 0
      +	!ether_addr_equal(a, b)
      
      @@
      expression a,b;
      @@
      -	ether_addr_equal(a, b) != 0
      +	ether_addr_equal(a, b)
      
      @@
      expression a,b;
      @@
      -	!!ether_addr_equal(a, b)
      +	ether_addr_equal(a, b)
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2e42e474
  19. 28 3月, 2012 1 次提交
  20. 01 2月, 2012 2 次提交
  21. 18 8月, 2011 1 次提交
  22. 11 8月, 2011 1 次提交
    • J
      cassini/niu/sun*: Move the Sun drivers · e689cf4a
      Jeff Kirsher 提交于
      Moves the Sun drivers into drivers/net/ethernet/sun/ and make
      the necessary Kconfig and Makefile changes.
      
      Oliver Hartkopp <socketcan@hartkopp.net> suggested removing the
      sun* prefix on the driver names.  This type of change I will
      leave up to the driver maintainers.
      
      CC: Sam Creasey <sammy@sammy.net>
      CC: Adrian Sun <asun@darksunrising.com>
      CC: Benjamin Herrenscmidt <benh@kernel.crashing.org>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e689cf4a
  23. 19 8月, 2010 1 次提交
  24. 10 5月, 2010 1 次提交
  25. 04 4月, 2010 1 次提交
    • J
      net: convert multicast list to list_head · 22bedad3
      Jiri Pirko 提交于
      Converts the list and the core manipulating with it to be the same as uc_list.
      
      +uses two functions for adding/removing mc address (normal and "global"
       variant) instead of a function parameter.
      +removes dev_mcast.c completely.
      +exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for
       manipulation with lists on a sandbox (used in bonding and 80211 drivers)
      Signed-off-by: NJiri Pirko <jpirko@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22bedad3
  26. 19 2月, 2010 1 次提交
  27. 30 12月, 2009 1 次提交
  28. 23 9月, 2009 1 次提交
    • J
      drivers/net: remove duplicate structure field initialization · 5ee21245
      Julia Lawall 提交于
      The definitions of vnet_ops and ehea_netdev_ops have initializations of a
      local function and eth_change_mtu for their respective ndo_change_mtu
      fields.  This change uses only the local function.
      
      The semantic match that finds this problem is as follows:
      (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @r@
      identifier I, s, fld;
      position p0,p;
      expression E;
      @@
      
      struct I s =@p0 { ... .fld@p = E, ...};
      
      @s@
      identifier I, s, r.fld;
      position r.p0,p;
      expression E;
      @@
      
      struct I s =@p0 { ... .fld@p = E, ...};
      
      @script:python@
      p0 << r.p0;
      fld << r.fld;
      ps << s.p;
      pr << r.p;
      @@
      
      if int(ps[0].line)!=int(pr[0].line) or int(ps[0].column)!=int(pr[0].column):
        cocci.print_main(fld,p0)
      // </smpl>
      Signed-off-by: NJulia Lawall <julia@diku.dk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5ee21245
  29. 13 7月, 2009 2 次提交
  30. 20 3月, 2009 1 次提交