1. 23 4月, 2014 1 次提交
  2. 04 4月, 2014 1 次提交
  3. 28 3月, 2014 2 次提交
    • Y
      tipc: rename node create lock to protect node list and hlist · 46651c59
      Ying Xue 提交于
      When a node is created, tipc_net_lock read lock is first held and
      then node_create_lock is grabbed in order to prevent the same node
      from being created and inserted into both node list and hlist twice.
      But when we query node from the two node lists, we only hold
      tipc_net_lock read lock without grabbing node_create_lock. Obviously
      this locking policy is unable to guarantee that the two node lists
      are always synchronized especially when the operation of changing
      and accessing them occurs in different contexts like currently doing.
      
      Therefore, rename node_create_lock to node_list_lock to protect the
      two node lists, that is, whenever node is inserted into them or node
      is queried from them, the node_list_lock should be always held. As a
      result, tipc_net_lock read lock becomes redundant and then can be
      removed from the node query functions.
      Signed-off-by: NYing Xue <ying.xue@windriver.com>
      Reviewed-by: NErik Hugne <erik.hugne@ericsson.com>
      Reviewed-by: NJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      46651c59
    • Y
      tipc: obsolete the remote management feature · 5902385a
      Ying Xue 提交于
      Due to the lacking of any credential, it's allowed to accept commands
      requested from remote nodes to query the local node status, which is
      prone to involve potential security risks. Instead, if we login to
      a remote node with ssh command, this approach is not only more safe
      than the remote management feature, but also it can give us more
      permissions like changing the remote node configuration. So it's
      reasonable for us to obsolete the remote management feature now.
      Signed-off-by: NYing Xue <ying.xue@windriver.com>
      Reviewed-by: NErik Hugne <erik.hugne@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5902385a
  4. 19 2月, 2014 1 次提交
    • Y
      tipc: align tipc function names with common naming practice in the network · 247f0f3c
      Ying Xue 提交于
      Rename the following functions, which are shorter and more in line
      with common naming practice in the network subsystem.
      
      tipc_bclink_send_msg->tipc_bclink_xmit
      tipc_bclink_recv_pkt->tipc_bclink_rcv
      tipc_disc_recv_msg->tipc_disc_rcv
      tipc_link_send_proto_msg->tipc_link_proto_xmit
      link_recv_proto_msg->tipc_link_proto_rcv
      link_send_sections_long->tipc_link_iovec_long_xmit
      tipc_link_send_sections_fast->tipc_link_iovec_xmit_fast
      tipc_link_send_sync->tipc_link_sync_xmit
      tipc_link_recv_sync->tipc_link_sync_rcv
      tipc_link_send_buf->__tipc_link_xmit
      tipc_link_send->tipc_link_xmit
      tipc_link_send_names->tipc_link_names_xmit
      tipc_named_recv->tipc_named_rcv
      tipc_link_recv_bundle->tipc_link_bundle_rcv
      tipc_link_dup_send_queue->tipc_link_dup_queue_xmit
      link_send_long_buf->tipc_link_frag_xmit
      
      tipc_multicast->tipc_port_mcast_xmit
      tipc_port_recv_mcast->tipc_port_mcast_rcv
      tipc_port_reject_sections->tipc_port_iovec_reject
      tipc_port_recv_proto_msg->tipc_port_proto_rcv
      tipc_connect->tipc_port_connect
      __tipc_connect->__tipc_port_connect
      __tipc_disconnect->__tipc_port_disconnect
      tipc_disconnect->tipc_port_disconnect
      tipc_shutdown->tipc_port_shutdown
      tipc_port_recv_msg->tipc_port_rcv
      tipc_port_recv_sections->tipc_port_iovec_rcv
      
      release->tipc_release
      accept->tipc_accept
      bind->tipc_bind
      get_name->tipc_getname
      poll->tipc_poll
      send_msg->tipc_sendmsg
      send_packet->tipc_send_packet
      send_stream->tipc_send_stream
      recv_msg->tipc_recvmsg
      recv_stream->tipc_recv_stream
      connect->tipc_connect
      listen->tipc_listen
      shutdown->tipc_shutdown
      setsockopt->tipc_setsockopt
      getsockopt->tipc_getsockopt
      
      Above changes have no impact on current users of the functions.
      Signed-off-by: NYing Xue <ying.xue@windriver.com>
      Reviewed-by: NJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      247f0f3c
  5. 20 8月, 2012 1 次提交
  6. 14 7月, 2012 1 次提交
  7. 27 4月, 2012 2 次提交
    • A
      tipc: Enhance re-initialization of network topology service · eb3865a9
      Allan Stephens 提交于
      Streamlines the job of re-initializing TIPC's network topology service
      when a node's network address is first assigned. Rather than destroying
      the topology server port and breaking its connections to existing
      subscribers, TIPC now simply lets the service continue running (since
      the change to the port identifier of each port used by the topology
      service no longer impacts the flow of messages between the service and
      its subscribers).
      
      This enhancement means that applications that utilize the topology
      service prior to the assignment of TIPC's network address no longer need
      to re-establish their subscriptions when the address is finally assigned.
      
      However, it is worth noting that any subsequent events for existing
      subscriptions report the new port identifier of the publishing port,
      rather than the original port identifier. (For example, a name that was
      previously reported as being published by <0.0.0:ref> may be subsequently
      withdrawn by <Z.C.N:ref>.)
      
      This doesn't impact any of the existing known userspace in tipc-utils,
      since (a) TIPC continues to treat references to the original port ID
      correctly and (b) normal use cases assign an address before active use.
      
      However if there does happen to be some rare/custom application out
      there that was relying on this, they can simply bypass the enhancement
      by issuing a subscription to {0,0} and break its connection to the
      topology service, if an associated withdrawal event occurs.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      eb3865a9
    • A
      tipc: Optimize re-initialization of configuration service · a2cfd45b
      Allan Stephens 提交于
      Streamlines the job of re-initializing TIPC's configuration service
      when a node's network address is first assigned. Rather than destroying
      the configuration server port and then recreating it, TIPC now simply
      withdraws the existing {0,<0.0.0>} name publication and creates a new
      {0,<Z.C.N>} name publication that identifies the node's network address
      to interested subscribers.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      a2cfd45b
  8. 20 4月, 2012 1 次提交
  9. 25 2月, 2012 2 次提交
  10. 28 12月, 2011 2 次提交
  11. 01 9月, 2011 1 次提交
  12. 15 3月, 2011 1 次提交
  13. 14 3月, 2011 5 次提交
    • A
      tipc: manually inline net_start/stop, make assoc. vars static · 34e46258
      Allan Stephens 提交于
      Relocates network-related variables into the subsystem files where
      they are now primarily used (following the recent rework of TIPC's
      node table), and converts globals into locals where possible. Changes
      the initialization of tipc_num_links from run-time to compile-time,
      and eliminates the net_start routine that becomes empty as a result.
      Also eliminates the corresponding net_stop routine by moving its
      (trivial) content into the one location that called the routine.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      34e46258
    • A
      tipc: Convert node object array to a hash table · 672d99e1
      Allan Stephens 提交于
      Replaces the dynamically allocated array of pointers to the cluster's
      node objects with a static hash table. Hash collisions are resolved
      using chaining, with a typical hash chain having only a single node,
      to avoid degrading performance during processing of incoming packets.
      The conversion to a hash table reduces the memory requirements for
      TIPC's node table to approximately the same size it had prior to
      the previous commit.
      
      In addition to the hash table itself, TIPC now also maintains a
      linked list for the node objects, sorted by ascending network address.
      This list allows TIPC to continue sending responses to user space
      applications that request node and link information in sorted order.
      The list also improves performance when name table update messages are
      sent by making it easier to identify the nodes that must be notified.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      672d99e1
    • A
      tipc: Eliminate configuration for maximum number of cluster nodes · f831c963
      Allan Stephens 提交于
      Gets rid of the need for users to specify the maximum number of
      cluster nodes supported by TIPC. TIPC now automatically provides
      support for all 4K nodes allowed by its addressing scheme.
      
      Note: This change sets TIPC's memory usage to the amount used by
      a maximum size node table with 4K entries.  An upcoming patch that
      converts the node table from a linear array to a hash table will
      compact the node table to a more efficient design, but for clarity
      it is nice to have all the Kconfig infrastruture go away separately.
      Signed-off-by: NAllan Stephens <Allan.Stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      f831c963
    • A
      tipc: Split up unified structure of network-related variables · d1bcb115
      Allan Stephens 提交于
      Converts the fields of the global "tipc_net" structure into individual
      variables.  Since the struct was never referenced as a complete unit,
      its existence was pointless.  This will facilitate upcoming changes to
      TIPC's node table and simpify upcoming relocation of the variables so
      they are only visible to the files that actually use them.
      
      This change is essentially cosmetic in nature, and doesn't affect the
      operation of TIPC.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      d1bcb115
    • A
      tipc: Fix problem with missing link in "tipc-config -l" output · 9df3b7eb
      Allan Stephens 提交于
      Removes a race condition that could cause TIPC's internal counter
      of the number of links it has to neighboring nodes to have the
      incorrect value if two independent threads of control simultaneously
      create new link endpoints connecting to two different nodes using two
      different bearers. Such under counting would result in TIPC failing to
      list the final link(s) in its response to a configuration request to
      list all of the node's links. The counter is now updated atomically
      to ensure that simultaneous increments do not interfere with each
      other.
      
      Thanks go to Peter Butler <pbutler@pt.com> for his assistance in
      diagnosing and fixing this problem.
      Signed-off-by: NAllan Stephens <Allan.Stephens@windriver.com>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      9df3b7eb
  14. 02 1月, 2011 5 次提交
  15. 03 12月, 2010 1 次提交
  16. 14 10月, 2010 1 次提交
  17. 10 9月, 2010 1 次提交
  18. 13 5月, 2010 1 次提交
  19. 31 3月, 2010 1 次提交
  20. 25 3月, 2010 1 次提交
  21. 04 3月, 2010 1 次提交
    • N
      tipc: Fix oops on send prior to entering networked mode (v3) · d0021b25
      Neil Horman 提交于
      Fix TIPC to disallow sending to remote addresses prior to entering NET_MODE
      
      user programs can oops the kernel by sending datagrams via AF_TIPC prior to
      entering networked mode.  The following backtrace has been observed:
      
      ID: 13459  TASK: ffff810014640040  CPU: 0   COMMAND: "tipc-client"
      [exception RIP: tipc_node_select_next_hop+90]
      RIP: ffffffff8869d3c3  RSP: ffff81002d9a5ab8  RFLAGS: 00010202
      RAX: 0000000000000001  RBX: 0000000000000001  RCX: 0000000000000001
      RDX: 0000000000000000  RSI: 0000000000000001  RDI: 0000000001001001
      RBP: 0000000001001001   R8: 0074736575716552   R9: 0000000000000000
      R10: ffff81003fbd0680  R11: 00000000000000c8  R12: 0000000000000008
      R13: 0000000000000001  R14: 0000000000000001  R15: ffff810015c6ca00
      ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
      RIP: 0000003cbd8d49a3  RSP: 00007fffc84e0be8  RFLAGS: 00010206
      RAX: 000000000000002c  RBX: ffffffff8005d116  RCX: 0000000000000000
      RDX: 0000000000000008  RSI: 00007fffc84e0c00  RDI: 0000000000000003
      RBP: 0000000000000000   R8: 00007fffc84e0c10   R9: 0000000000000010
      R10: 0000000000000000  R11: 0000000000000246  R12: 0000000000000000
      R13: 00007fffc84e0d10  R14: 0000000000000000  R15: 00007fffc84e0c30
      ORIG_RAX: 000000000000002c  CS: 0033  SS: 002b
      
      What happens is that, when the tipc module in inserted it enters a standalone
      node mode in which communication to its own address is allowed <0.0.0> but not
      to other addresses, since the appropriate data structures have not been
      allocated yet (specifically the tipc_net pointer).  There is nothing stopping a
      client from trying to send such a message however, and if that happens, we
      attempt to dereference tipc_net.zones while the pointer is still NULL, and
      explode.  The fix is pretty straightforward.  Since these oopses all arise from
      the dereference of global pointers prior to their assignment to allocated
      values, and since these allocations are small (about 2k total), lets convert
      these pointers to static arrays of the appropriate size.  All the accesses to
      these bits consider 0/NULL to be a non match when searching, so all the lookups
      still work properly, and there is no longer a chance of a bad dererence
      anywhere.  As a bonus, this lets us eliminate the setup/teardown routines for
      those pointers, and elimnates the need to preform any locking around them to
      prevent access while their being allocated/freed.
      
      I've updated the tipc_net structure to behave this way to fix the exact reported
      problem, and also fixed up the tipc_bearers and media_list arrays to fix an
      obvious simmilar problem that arises from issuing tipc-config commands to
      manipulate bearers/links prior to entering networked mode
      
      I've tested this for a few hours by running the sanity tests and stress test
      with the tipcutils suite, and nothing has fallen over.  There have been a few
      lockdep warnings, but those were there before, and can be addressed later, as
      they didn't actually result in any deadlock.
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      CC: Allan Stephens <allan.stephens@windriver.com>
      CC: David S. Miller <davem@davemloft.net>
      CC: tipc-discussion@lists.sourceforge.net
      
       bearer.c |   37 ++++++-------------------------------
       bearer.h |    2 +-
       net.c    |   25 ++++---------------------
       3 files changed, 11 insertions(+), 53 deletions(-)
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d0021b25
  22. 03 9月, 2008 1 次提交
  23. 15 7月, 2008 1 次提交
  24. 22 5月, 2008 1 次提交
  25. 11 2月, 2007 1 次提交
  26. 22 7月, 2006 1 次提交
  27. 28 6月, 2006 1 次提交
  28. 21 3月, 2006 1 次提交