1. 29 1月, 2008 2 次提交
    • E
      [AX25]: sparse cleanups · f16f3026
      Eric Dumazet 提交于
      net/ax25/ax25_route.c:251:13: warning: context imbalance in
      'ax25_rt_seq_start' - wrong count at exit
      net/ax25/ax25_route.c:276:13: warning: context imbalance in 'ax25_rt_seq_stop'
      - unexpected unlock
      net/ax25/ax25_std_timer.c:65:25: warning: expensive signed divide
      net/ax25/ax25_uid.c:46:1: warning: symbol 'ax25_uid_list' was not declared.
      Should it be static?
      net/ax25/ax25_uid.c:146:13: warning: context imbalance in 'ax25_uid_seq_start'
      - wrong count at exit
      net/ax25/ax25_uid.c:169:13: warning: context imbalance in 'ax25_uid_seq_stop'
      - unexpected unlock
      net/ax25/af_ax25.c:573:28: warning: expensive signed divide
      net/ax25/af_ax25.c:1865:13: warning: context imbalance in 'ax25_info_start' -
      wrong count at exit
      net/ax25/af_ax25.c:1888:13: warning: context imbalance in 'ax25_info_stop' -
      unexpected unlock
      net/ax25/ax25_ds_timer.c:133:25: warning: expensive signed divide
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f16f3026
    • P
      [NET]: Convert init_timer into setup_timer · b24b8a24
      Pavel Emelyanov 提交于
      Many-many code in the kernel initialized the timer->function
      and  timer->data together with calling init_timer(timer). There
      is already a helper for this. Use it for networking code.
      
      The patch is HUGE, but makes the code 130 lines shorter
      (98 insertions(+), 228 deletions(-)).
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Acked-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b24b8a24
  2. 11 1月, 2008 1 次提交
    • J
      [AX25] af_ax25: Possible circular locking. · ecd2ebde
      Jarek Poplawski 提交于
      Bernard Pidoux F6BVP reported:
      > When I killall kissattach I can see the following message.
      >
      > This happens on kernel 2.6.24-rc5 already patched with the 6 previously
      > patches I sent recently.
      >
      >
      > =======================================================
      > [ INFO: possible circular locking dependency detected ]
      > 2.6.23.9 #1
      > -------------------------------------------------------
      > kissattach/2906 is trying to acquire lock:
      >  (linkfail_lock){-+..}, at: [<d8bd4603>] ax25_link_failed+0x11/0x39 [ax25]
      >
      > but task is already holding lock:
      >  (ax25_list_lock){-+..}, at: [<d8bd7c7c>] ax25_device_event+0x38/0x84
      > [ax25]
      >
      > which lock already depends on the new lock.
      >
      >
      > the existing dependency chain (in reverse order) is:
      ...
      
      lockdep is worried about the different order here:
      
      #1 (rose_neigh_list_lock){-+..}:
      #3 (ax25_list_lock){-+..}:
      
      #0 (linkfail_lock){-+..}:
      #1 (rose_neigh_list_lock){-+..}:
      
      #3 (ax25_list_lock){-+..}:
      #0 (linkfail_lock){-+..}:
      
      So, ax25_list_lock could be taken before and after linkfail_lock. 
      I don't know if this three-thread clutch is very probable (or
      possible at all), but it seems another bug reported by Bernard
      ("[...] system impossible to reboot with linux-2.6.24-rc5")
      could have similar source - namely ax25_list_lock held by
      ax25_kill_by_device() during ax25_disconnect(). It looks like the
      only place which calls ax25_disconnect() this way, so I guess, it
      isn't necessary.
      
      This patch is breaking the lock for ax25_disconnect().
      Reported-and-tested-by: NBernard Pidoux <f6bvp@free.fr>
      Signed-off-by: NJarek Poplawski <jarkao2@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ecd2ebde
  3. 10 1月, 2008 1 次提交
  4. 01 11月, 2007 1 次提交
  5. 11 10月, 2007 4 次提交
    • E
      [NET]: Make the device list and device lookups per namespace. · 881d966b
      Eric W. Biederman 提交于
      This patch makes most of the generic device layer network
      namespace safe.  This patch makes dev_base_head a
      network namespace variable, and then it picks up
      a few associated variables.  The functions:
      dev_getbyhwaddr
      dev_getfirsthwbytype
      dev_get_by_flags
      dev_get_by_name
      __dev_get_by_name
      dev_get_by_index
      __dev_get_by_index
      dev_ioctl
      dev_ethtool
      dev_load
      wireless_process_ioctl
      
      were modified to take a network namespace argument, and
      deal with it.
      
      vlan_ioctl_set and brioctl_set were modified so their
      hooks will receive a network namespace argument.
      
      So basically anthing in the core of the network stack that was
      affected to by the change of dev_base was modified to handle
      multiple network namespaces.  The rest of the network stack was
      simply modified to explicitly use &init_net the initial network
      namespace.  This can be fixed when those components of the network
      stack are modified to handle multiple network namespaces.
      
      For now the ifindex generator is left global.
      
      Fundametally ifindex numbers are per namespace, or else
      we will have corner case problems with migration when
      we get that far.
      
      At the same time there are assumptions in the network stack
      that the ifindex of a network device won't change.  Making
      the ifindex number global seems a good compromise until
      the network stack can cope with ifindex changes when
      you change namespaces, and the like.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      881d966b
    • E
      [NET]: Make device event notification network namespace safe · e9dc8653
      Eric W. Biederman 提交于
      Every user of the network device notifiers is either a protocol
      stack or a pseudo device.  If a protocol stack that does not have
      support for multiple network namespaces receives an event for a
      device that is not in the initial network namespace it quite possibly
      can get confused and do the wrong thing.
      
      To avoid problems until all of the protocol stacks are converted
      this patch modifies all netdev event handlers to ignore events on
      devices that are not in the initial network namespace.
      
      As the rest of the code is made network namespace aware these
      checks can be removed.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e9dc8653
    • E
      [NET]: Make socket creation namespace safe. · 1b8d7ae4
      Eric W. Biederman 提交于
      This patch passes in the namespace a new socket should be created in
      and has the socket code do the appropriate reference counting.  By
      virtue of this all socket create methods are touched.  In addition
      the socket create methods are modified so that they will fail if
      you attempt to create a socket in a non-default network namespace.
      
      Failing if we attempt to create a socket outside of the default
      network namespace ensures that as we incrementally make the network stack
      network namespace aware we will not export functionality that someone
      has not audited and made certain is network namespace safe.
      Allowing us to partially enable network namespaces before all of the
      exotic protocols are supported.
      
      Any protocol layers I have missed will fail to compile because I now
      pass an extra parameter into the socket creation code.
      
      [ Integrated AF_IUCV build fixes from Andrew Morton... -DaveM ]
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1b8d7ae4
    • E
      [NET]: Make /proc/net per network namespace · 457c4cbc
      Eric W. Biederman 提交于
      This patch makes /proc/net per network namespace.  It modifies the global
      variables proc_net and proc_net_stat to be per network namespace.
      The proc_net file helpers are modified to take a network namespace argument,
      and all of their callers are fixed to pass &init_net for that argument.
      This ensures that all of the /proc/net files are only visible and
      usable in the initial network namespace until the code behind them
      has been updated to be handle multiple network namespaces.
      
      Making /proc/net per namespace is necessary as at least some files
      in /proc/net depend upon the set of network devices which is per
      network namespace, and even more files in /proc/net have contents
      that are relevant to a single network namespace.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      457c4cbc
  6. 19 7月, 2007 1 次提交
  7. 11 7月, 2007 1 次提交
  8. 09 5月, 2007 1 次提交
  9. 26 4月, 2007 7 次提交
  10. 13 2月, 2007 1 次提交
  11. 11 2月, 2007 1 次提交
  12. 18 12月, 2006 1 次提交
  13. 03 12月, 2006 1 次提交
    • A
      [AX25]: Use kmemdup · 0459d70a
      Arnaldo Carvalho de Melo 提交于
      Code diff stats:
      
      [acme@newtoy net-2.6.20]$ codiff /tmp/ax25.ko.before /tmp/ax25.ko.after
      /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ax25/ax25_out.c:
        ax25_send_frame |   -8
       1 function changed, 8 bytes removed
      
      /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ax25/ax25_route.c:
        ax25_rt_autobind |  -15
       1 function changed, 15 bytes removed
      
      /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ax25/af_ax25.c:
        ax25_make_new |  -33
       1 function changed, 33 bytes removed
      
      /pub/scm/linux/kernel/git/acme/net-2.6.20/net/ax25/sysctl_net_ax25.c:
        ax25_register_sysctl |  -21
       1 function changed, 21 bytes removed
      
      /tmp/ax25.ko.after:
       4 functions changed, 77 bytes removed
      [acme@newtoy net-2.6.20]$
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      0459d70a
  14. 13 7月, 2006 1 次提交
  15. 10 7月, 2006 1 次提交
  16. 01 7月, 2006 1 次提交
  17. 04 5月, 2006 2 次提交
  18. 12 1月, 2006 1 次提交
  19. 04 1月, 2006 2 次提交
    • C
      [NET]: Add a dev_ioctl() fallback to sock_ioctl() · b5e5fa5e
      Christoph Hellwig 提交于
      Currently all network protocols need to call dev_ioctl as the default
      fallback in their ioctl implementations.  This patch adds a fallback
      to dev_ioctl to sock_ioctl if the protocol returned -ENOIOCTLCMD.
      This way all the procotol ioctl handlers can be simplified and we don't
      need to export dev_ioctl.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b5e5fa5e
    • E
      [NET]: move struct proto_ops to const · 90ddc4f0
      Eric Dumazet 提交于
      I noticed that some of 'struct proto_ops' used in the kernel may share
      a cache line used by locks or other heavily modified data. (default
      linker alignement is 32 bytes, and L1_CACHE_LINE is 64 or 128 at
      least)
      
      This patch makes sure a 'struct proto_ops' can be declared as const,
      so that all cpus can share all parts of it without false sharing.
      
      This is not mandatory : a driver can still use a read/write structure
      if it needs to (and eventually a __read_mostly)
      
      I made a global stubstitute to change all existing occurences to make
      them const.
      
      This should reduce the possibility of false sharing on SMP, and
      speedup some socket system calls.
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      90ddc4f0
  20. 09 11月, 2005 1 次提交
  21. 13 9月, 2005 4 次提交
  22. 07 9月, 2005 1 次提交
  23. 30 8月, 2005 1 次提交
  24. 24 8月, 2005 2 次提交
    • R
      [AX25]: UID fixes · 01d7dd0e
      Ralf Baechle 提交于
       o Brown paperbag bug - ax25_findbyuid() was always returning a NULL pointer
         as the result.  Breaks ROSE completly and AX.25 if UID policy set to deny.
      
       o While the list structure of AX.25's UID to callsign mapping table was
         properly protected by a spinlock, it's elements were not refcounted
         resulting in a race between removal and usage of an element.
      Signed-off-by: NRalf Baechle DL5RB <ralf@linux-mips.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      01d7dd0e
    • R
      [NET]: Fix socket bitop damage · 53b924b3
      Ralf Baechle 提交于
      The socket flag cleanups that went into 2.6.12-rc1 are basically oring
      the flags of an old socket into the socket just being created.
      Unfortunately that one was just initialized by sock_init_data(), so already
      has SOCK_ZAPPED set.  As the result zapped sockets are created and all
      incoming connection will fail due to this bug which again was carefully
      replicated to at least AX.25, NET/ROM or ROSE.
      
      In order to keep the abstraction alive I've introduced sock_copy_flags()
      to copy the socket flags from one sockets to another and used that
      instead of the bitwise copy thing.  Anyway, the idea here has probably
      been to copy all flags, so sock_copy_flags() should be the right thing.
      With this the ham radio protocols are usable again, so I hope this will
      make it into 2.6.13.
      Signed-off-by: NRalf Baechle DL5RB <ralf@linux-mips.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      53b924b3