1. 15 7月, 2008 25 次提交
    • A
      tipc: Fix race condition that could cause accept() to fail · 2da59918
      Allan Stephens 提交于
      This patch ensurs that accept() returns successfully even when
      the newly created socket is immediately disconnected by its peer.
      Previously, accept() would fail if it was unable to pass back
      the optional address info for the socket's peer before the
      socket became disconnected; TIPC now allows accept() to gather
      peer address information after disconnection.  As a bonus, the
      revised code accesses the socket's port more efficiently, without
      the overhead incurred by a reference table lookup.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2da59918
    • A
      tipc: Optimize pointer dereferencing when receiving stream data · 8642bd9e
      Allan Stephens 提交于
      This patch eliminates an unnecessary pointer dereference when
      accessing a stream-based socket's receive queue.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8642bd9e
    • A
      tipc: Remove unneeded parameter to tipc_createport_raw() · 0ea52241
      Allan Stephens 提交于
      This patch eliminates an unneeded parameter when creating a low-level
      TIPC port object.  Instead of returning both the pointer to the port
      structure and the port's reference ID, it now returns only the pointer
      since the port structure contains the reference ID as one of its fields.
      Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0ea52241
    • D
      netlabel: return msg overflow error from netlbl_cipsov4_list faster · 83aa2e96
      Denis V. Lunev 提交于
      Currently, we are trying to place the information from the kernel to
      1, 2, 3 and 4 pages sequentially. These pages are allocated via slab.
      Though, from the slab point of view steps 3 and 4 are equivalent on
      most architectures. So, lets skip 3 pages attempt.
      
      By the way, should we switch from .doit to .dumpit interface here?
      The amount of data seems quite big for me.
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      Acked-by: NPaul Moore <paul.moore@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      83aa2e96
    • J
      net: Remove references to wan-router.txt in Kconfigs · 7197914c
      Johann Felix Soden 提交于
      This patch removes references in drivers/net/wan/Kconfig and
      net/wanrouter/Kconfig to Documentation/networking/wan-router.txt
      which was removed in commit 99971e70
      ("[WANPIPE]: Forgotten bits of Sangoma drivers removal.").
      Signed-off-by: NJohann Felix Soden <johfel@users.sourceforge.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7197914c
    • W
      8021q: Check return of dev_set_promiscuity/allmulti · 89146504
      Wang Chen 提交于
      dev_set_promiscuity/allmulti might overflow.
      Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
      dev_set_promiscuity/allmulti return error number if overflow happened.
      
      Here, we check all positive increment for promiscuity and allmulti
      to get error return.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Acked-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      89146504
    • W
      ipv4: Fix ipmr unregister device oops · 7dc00c82
      Wang Chen 提交于
      An oops happens during device unregister.
      
      The following oops happened when I add two tunnels, which
      use a same device, and then delete one tunnel.
      Obviously deleting tunnel "A" causes device unregister, which
      send a notification, and after receiving notification, ipmr do
      unregister again for tunnel "B" which also use same device.
      That is wrong.
      After receiving notification, ipmr only needs to decrease reference
      count and don't do duplicated unregister.
      Fortunately, IPv6 side doesn't add tunnel in ip6mr, so it's clean.
      
      This patch fixs:
      - unregister device oops
      - using after dev_put()
      
      Here is the oops:
      ===
      Jul 11 15:39:29 wangchen kernel: ------------[ cut here ]------------
      Jul 11 15:39:29 wangchen kernel: kernel BUG at net/core/dev.c:3651!
      Jul 11 15:39:29 wangchen kernel: invalid opcode: 0000 [#1] 
      Jul 11 15:39:29 wangchen kernel: Modules linked in: ipip tunnel4 nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs ipv6 snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device af_packet binfmt_misc button battery ac loop dm_mod usbhid ff_memless pcmcia firmware_class ohci1394 8139too mii ieee1394 yenta_socket rsrc_nonstatic pcmcia_core ide_cd_mod cdrom snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm i2c_i801 snd_timer snd i2c_core soundcore snd_page_alloc rng_core shpchp ehci_hcd uhci_hcd pci_hotplug intel_agp agpgart usbcore ext3 jbd ata_piix ahci libata dock edd fan thermal processor thermal_sys piix sd_mod scsi_mod ide_disk ide_core [last unloaded: freq_table]
      Jul 11 15:39:29 wangchen kernel: 
      Jul 11 15:39:29 wangchen kernel: Pid: 4102, comm: mroute Not tainted (2.6.26-rc9-default #69)
      Jul 11 15:39:29 wangchen kernel: EIP: 0060:[<c024636b>] EFLAGS: 00010202 CPU: 0
      Jul 11 15:39:29 wangchen kernel: EIP is at rollback_registered+0x61/0xe3
      Jul 11 15:39:29 wangchen kernel: EAX: 00000001 EBX: ecba6000 ECX: 00000000 EDX: ffffffff
      Jul 11 15:39:29 wangchen kernel: ESI: 00000001 EDI: ecba6000 EBP: c03de2e8 ESP: ed8e7c3c
      Jul 11 15:39:29 wangchen kernel:  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
      Jul 11 15:39:29 wangchen kernel: Process mroute (pid: 4102, ti=ed8e6000 task=ed41e830 task.ti=ed8e6000)
      Jul 11 15:39:29 wangchen kernel: Stack: ecba6000 c024641c 00000028 c0284e1a 00000001 c03de2e8 ecba6000 eecff360 
      Jul 11 15:39:29 wangchen kernel:        c0284e4c c03536f4 fffffff8 00000000 c029a819 ecba6000 00000006 ecba6000 
      Jul 11 15:39:29 wangchen kernel:        00000000 ecba6000 c03de2c0 c012841b ffffffff 00000000 c024639f ecba6000 
      Jul 11 15:39:29 wangchen kernel: Call Trace:
      Jul 11 15:39:29 wangchen kernel:  [<c024641c>] unregister_netdevice+0x2f/0x51
      Jul 11 15:39:29 wangchen kernel:  [<c0284e1a>] vif_delete+0xaf/0xc3
      Jul 11 15:39:29 wangchen kernel:  [<c0284e4c>] ipmr_device_event+0x1e/0x30
      Jul 11 15:39:29 wangchen kernel:  [<c029a819>] notifier_call_chain+0x2a/0x47
      Jul 11 15:39:29 wangchen kernel:  [<c012841b>] raw_notifier_call_chain+0x9/0xc
      Jul 11 15:39:29 wangchen kernel:  [<c024639f>] rollback_registered+0x95/0xe3
      Jul 11 15:39:29 wangchen kernel:  [<c024641c>] unregister_netdevice+0x2f/0x51
      Jul 11 15:39:29 wangchen kernel:  [<c0284e1a>] vif_delete+0xaf/0xc3
      Jul 11 15:39:29 wangchen kernel:  [<c0285eee>] ip_mroute_setsockopt+0x47a/0x801
      Jul 11 15:39:29 wangchen kernel:  [<eea5a70c>] do_get_write_access+0x2df/0x313 [jbd]
      Jul 11 15:39:29 wangchen kernel:  [<c01727c4>] __find_get_block_slow+0xda/0xe4
      Jul 11 15:39:29 wangchen kernel:  [<c0172a7f>] __find_get_block+0xf8/0x122
      Jul 11 15:39:29 wangchen kernel:  [<c0172a7f>] __find_get_block+0xf8/0x122
      Jul 11 15:39:29 wangchen kernel:  [<eea5d563>] journal_cancel_revoke+0xda/0x110 [jbd]
      Jul 11 15:39:29 wangchen kernel:  [<c0263501>] ip_setsockopt+0xa9/0x9ee
      Jul 11 15:39:29 wangchen kernel:  [<eea5d563>] journal_cancel_revoke+0xda/0x110 [jbd]
      Jul 11 15:39:29 wangchen kernel:  [<eea5a70c>] do_get_write_access+0x2df/0x313 [jbd]
      Jul 11 15:39:29 wangchen kernel:  [<eea69287>] __ext3_get_inode_loc+0xcf/0x271 [ext3]
      Jul 11 15:39:29 wangchen kernel:  [<eea743c7>] __ext3_journal_dirty_metadata+0x13/0x32 [ext3]
      Jul 11 15:39:29 wangchen kernel:  [<c0116434>] __wake_up+0xf/0x15
      Jul 11 15:39:29 wangchen kernel:  [<eea5a424>] journal_stop+0x1bd/0x1c6 [jbd]
      Jul 11 15:39:29 wangchen kernel:  [<eea703a7>] __ext3_journal_stop+0x19/0x34 [ext3]
      Jul 11 15:39:29 wangchen kernel:  [<c014291e>] get_page_from_freelist+0x94/0x369
      Jul 11 15:39:29 wangchen kernel:  [<c01408f2>] filemap_fault+0x1ac/0x2fe
      Jul 11 15:39:29 wangchen kernel:  [<c01a605e>] security_sk_alloc+0xd/0xf
      Jul 11 15:39:29 wangchen kernel:  [<c023edea>] sk_prot_alloc+0x36/0x78
      Jul 11 15:39:29 wangchen kernel:  [<c0240037>] sk_alloc+0x3a/0x40
      Jul 11 15:39:29 wangchen kernel:  [<c0276062>] raw_hash_sk+0x46/0x4e
      Jul 11 15:39:29 wangchen kernel:  [<c0166aff>] d_alloc+0x1b/0x157
      Jul 11 15:39:29 wangchen kernel:  [<c023e4d1>] sock_common_setsockopt+0x12/0x16
      Jul 11 15:39:29 wangchen kernel:  [<c023cb1e>] sys_setsockopt+0x6f/0x8e
      Jul 11 15:39:29 wangchen kernel:  [<c023e105>] sys_socketcall+0x15c/0x19e
      Jul 11 15:39:29 wangchen kernel:  [<c0103611>] sysenter_past_esp+0x6a/0x99
      Jul 11 15:39:29 wangchen kernel:  [<c0290000>] unix_poll+0x69/0x78
      Jul 11 15:39:29 wangchen kernel:  =======================
      Jul 11 15:39:29 wangchen kernel: Code: 83 e0 01 00 00 85 c0 75 1f 53 53 68 12 81 31 c0 e8 3c 30 ed ff ba 3f 0e 00 00 b8 b9 7f 31 c0 83 c4 0c 5b e9 f5 26 ed ff 48 74 04 <0f> 0b eb fe 89 d8 e8 21 ff ff ff 89 d8 e8 62 ea ff ff c7 83 e0 
      Jul 11 15:39:29 wangchen kernel: EIP: [<c024636b>] rollback_registered+0x61/0xe3 SS:ESP 0068:ed8e7c3c
      Jul 11 15:39:29 wangchen kernel: ---[ end trace c311acf85d169786 ]---
      ===
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7dc00c82
    • W
      ipv4: Check return of dev_set_allmulti · d607032d
      Wang Chen 提交于
      allmulti might overflow.
      Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
      dev_set_promiscuity/allmulti return error number if overflow happened.
      
      Here, we check the positive increment for allmulti to get error return.
      
      PS: For unwinding tunnel creating, we let ipip->ioctl() to handle it.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d607032d
    • W
      ipv6: Fix using after dev_put() · 7af3db78
      Wang Chen 提交于
      Patrick McHardy pointed it out.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7af3db78
    • W
      ipv6: Check return of dev_set_allmulti · 5ae7b444
      Wang Chen 提交于
      allmulti might overflow.
      Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
      dev_set_promiscuity/allmulti return error number if overflow happened.
      
      Here, we check the positive increment for allmulti to get error return.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Acked-by: Patrick McHardy <kaber@trash.net> 
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5ae7b444
    • W
      bridge: Check return of dev_set_promiscuity · bc3f9076
      Wang Chen 提交于
      dev_set_promiscuity/allmulti might overflow.
      Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
      dev_set_promiscuity/allmulti return error number if overflow happened.
      
      Here, we check the positive increment for promiscuity to get error return.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bc3f9076
    • W
      af_packet: Check return of dev_set_promiscuity/allmulti · 2aeb0b88
      Wang Chen 提交于
      dev_set_promiscuity/allmulti might overflow.  Commit: "netdevice: Fix
      promiscuity and allmulti overflow" in net-next makes
      dev_set_promiscuity/allmulti return error number if overflow happened.
      
      In af_packet, we check all positive increment for promiscuity and
      allmulti to get error return.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Acked-by: Patrick McHardy <kaber@trash.net> 
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2aeb0b88
    • P
      72d9794f
    • D
    • E
      mac80211: dont add a STA which is not in the same IBSS · 1e188637
      Emmanuel Grumbach 提交于
      This patch avoids adding STAs that don't belong to our IBSS
      ieee80211_bssid_match matches also bcast address so also APs
      were added
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      1e188637
    • J
      mac80211: fix struct ieee80211_tx_queue_params · f434b2d1
      Johannes Berg 提交于
      Multiple issues:
       - there are no "default" values needed
       - cw_min/cw_max can be larger than documented
       - restructure to decrease size
       - use get_unaligned_le16
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f434b2d1
    • J
      mac80211: fix TX sequence numbers · f591fa5d
      Johannes Berg 提交于
      This patch makes mac80211 assign proper sequence numbers to
      QoS-data frames. It also removes the old sequence number code
      because we noticed that only the driver or hardware can assign
      sequence numbers to non-QoS-data and especially management
      frames in a race-free manner because beacons aren't passed
      through mac80211's TX path.
      
      This patch also adds temporary code to the rt2x00 drivers to
      not break them completely, that code will have to be reworked
      for proper sequence numbers on beacons.
      
      It also moves sequence number assignment down in the TX path
      so no sequence numbers are assigned to frames that are dropped.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f591fa5d
    • J
      wext: make sysfs bits optional and deprecate them · 22bb1be4
      Johannes Berg 提交于
      The /sys/class/net/*/wireless/ direcory is, as far as I know, not
      used by anyone. Additionally, the same data is available via wext
      ioctls. Hence the sysfs files are pretty much useless. This patch
      makes them optional and schedules them for removal.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Cc: Jean Tourrilhes <jt@hpl.hp.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      22bb1be4
    • J
      mac80211: fix RX sequence number check · 1411f9b5
      Johannes Berg 提交于
      According to 802.11-2007, we are doing the wrong thing in the
      sequence number checks when receiving frames. This fixes it.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      1411f9b5
    • E
      mac80211: Fix ieee80211_rx_reorder_ampdu: ignore QoS null packets · 2560b6e2
      Emmanuel Grumbach 提交于
      This patch fixes the check at the entrance to ieee80211_rx_reorder_ampdu.
      This check has been broken by 'mac80211: rx.c use new helpers'.
      
      Letting QoS NULL packet in ieee80211_rx_reorder_ampdu led to packet loss in
      RX.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2560b6e2
    • J
      mac80211: revamp beacon configuration · 9d139c81
      Johannes Berg 提交于
      This patch changes mac80211's beacon configuration handling
      to never pass skbs to the driver directly but rather always
      require the driver to use ieee80211_beacon_get(). Additionally,
      it introduces "change flags" on the config_interface() call
      to enable drivers to figure out what is changing. Finally, it
      removes the beacon_update() driver callback in favour of
      having IBSS beacon delivered by ieee80211_beacon_get() as well.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9d139c81
    • J
      mac80211: push interface checks down · f3947e2d
      Johannes Berg 提交于
      This patch pushes the "netif_running()" and "same type as before"
      checks down into ieee80211_if_change_type() to centralise the
      logic instead of duplicating it for cfg80211 and wext.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f3947e2d
    • J
      mac80211: revamp virtual interface handling · 75636525
      Johannes Berg 提交于
      This patch revamps the virtual interface handling and makes the
      code much easier to follow. Fewer functions, better names, less
      spaghetti code.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      75636525
    • J
      mac80211: make master netdev handling sane · 3e122be0
      Johannes Berg 提交于
      Currently, almost every interface type has a 'bss' pointer
      pointing to BSS information. This BSS information, however,
      is for a _local_ BSS, not for the BSS we joined, so having
      it on a STA mode interface makes little sense, but now they
      have it pointing to the master device, which is an AP mode
      virtual interface. However, except for some bitrate control
      data, this pointer is only used in AP/VLAN modes (for power
      saving stations.)
      
      Overall, it is not necessary to even have the master netdev
      be a valid virtual interface, and it doesn't have to be on
      the list of interfaces either.
      
      This patch changes the master netdev to be special, it now
       - no longer is on the list of virtual interfaces, which
         lets me remove a lot of tests for that
       - no longer has sub_if_data attached, since that isn't used
      
      Additionally, this patch changes some vlan/ap mode handling
      that is related to these 'bss' pointers described above (but
      in the VLAN case they actually make sense because there they
      point to the AP they belong to); it also adds some debugging
      code to IEEE80211_DEV_TO_SUB_IF to validate it is not called
      on the master netdev any more.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3e122be0
    • S
      mac80211: power management wext hooks · 49292d56
      Samuel Ortiz 提交于
      This patch implements the power management routines wireless extensions
      for mac80211.
      For now we only support switching PS mode between on and off.
      Signed-off-by: NSamuel Ortiz <sameo@openedhand.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      49292d56
  2. 13 7月, 2008 4 次提交
    • G
      dccp ccid-3: Length of loss intervals · 2eeea7ba
      Gerrit Renker 提交于
      This corrects an error in the computation of the open loss interval I_0:
        * the interval length is (highest_seqno - start_seqno) + 1
        * and not (highest_seqno - start_seqno).
      
      This condition was not fully clear in RFC 3448, but reflects the current
      revision state of rfc3448bis and is also consistent with RFC 4340, 6.1.1.
      
      Further changes:
      ----------------
       * variable renamed due to line length constraints;
       * explicit typecast to `s64' to avoid implicit signed/unsigned casting.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      2eeea7ba
    • G
      dccp ccid-3: Fix a loss detection bug · b552c623
      Gerrit Renker 提交于
      This fixes a bug in the logic of the TFRC loss detection:
       * new_loss_indicated() should not be called while a loss is pending;
       * but the code allows this;
       * thus, for two subsequent gaps in the sequence space, when loss_count
         has not yet reached NDUPACK=3, the loss_count is falsely reduced to 1.
      
      To avoid further and similar problems, all loss handling and loss detection is
      now done inside tfrc_rx_hist_handle_loss(), using an appropriate routine to
      track new losses.
      
      Further changes:
      ----------------
       * added a reminder that no RX history operations should be performed when
         rx_handle_loss() has identified a (new) loss, since the function takes
         care of packet reordering during loss detection;
       * made tfrc_rx_hist_loss_pending() bool (thanks to an earlier suggestion
         by Arnaldo);		 
       * removed unused functions.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      b552c623
    • G
      dccp: Upgrade NDP count from 3 to 6 bytes · 5b5d0e70
      Gerrit Renker 提交于
      RFC 4340, 7.7 specifies up to 6 bytes for the NDP Count option, whereas the code
      is currently limited to up to 3 bytes. This seems to be a relict of an earlier 
      draft version and is brought up to date by the patch.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      5b5d0e70
    • G
      dccp ccid-3: Fix error in loss detection · 2013c7e3
      Gerrit Renker 提交于
      The TFRC loss detection code used the wrong loss condition (RFC 4340, 7.7.1):
       * the difference between sequence numbers s1 and s2 instead of 
       * the number of packets missing between s1 and s2 (one less than the distance).
      
      Since this condition appears in many places of the code, it has been put into a
      separate function, dccp_loss_free().
      
      Further changes:
      ----------------
       * tidied up incorrect typing (it was using `int' for u64/s64 types);
       * optimised conditional statements for common case of non-reordered packets;
       * rewrote comments/documentation to match the changes.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      2013c7e3
  3. 11 7月, 2008 5 次提交
  4. 10 7月, 2008 3 次提交
  5. 09 7月, 2008 3 次提交