1. 29 10月, 2009 3 次提交
    • N
      AF_RAW: Augment raw_send_hdrinc to expand skb to fit iphdr->ihl (v2) · 55888dfb
      Neil Horman 提交于
      Augment raw_send_hdrinc to correct for incorrect ip header length values
      
      A series of oopses was reported to me recently.  Apparently when using AF_RAW
      sockets to send data to peers that were reachable via ipsec encapsulation,
      people could panic or BUG halt their systems.
      
      I've tracked the problem down to user space sending an invalid ip header over an
      AF_RAW socket with IP_HDRINCL set to 1.
      
      Basically what happens is that userspace sends down an ip frame that includes
      only the header (no data), but sets the ip header ihl value to a large number,
      one that is larger than the total amount of data passed to the sendmsg call.  In
      raw_send_hdrincl, we allocate an skb based on the size of the data in the msghdr
      that was passed in, but assume the data is all valid.  Later during ipsec
      encapsulation, xfrm4_tranport_output moves the entire frame back in the skbuff
      to provide headroom for the ipsec headers.  During this operation, the
      skb->transport_header is repointed to a spot computed by
      skb->network_header + the ip header length (ihl).  Since so little data was
      passed in relative to the value of ihl provided by the raw socket, we point
      transport header to an unknown location, resulting in various crashes.
      
      This fix for this is pretty straightforward, simply validate the value of of
      iph->ihl when sending over a raw socket.  If (iph->ihl*4U) > user data buffer
      size, drop the frame and return -EINVAL.  I just confirmed this fixes the
      reported crashes.
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      55888dfb
    • D
    • J
      bonding: fix a race condition in calls to slave MII ioctls · d9d52832
      Jiri Bohac 提交于
      In mii monitor mode, bond_check_dev_link() calls the the ioctl
      handler of slave devices. It stores the ndo_do_ioctl function
      pointer to a static (!) ioctl variable and later uses it to call the
      handler with the IOCTL macro.
      
      If another thread executes bond_check_dev_link() at the same time
      (even with a different bond, which none of the locks prevent), a
      race condition occurs. If the two racing slaves have different
      drivers, this may result in one driver's ioctl handler being
      called with a pointer to a net_device controlled with a different
      driver, resulting in unpredictable breakage.
      
      Unless I am overlooking something, the "static" must be a
      copy'n'paste error (?).
      Signed-off-by: NJiri Bohac <jbohac@suse.cz>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d9d52832
  2. 28 10月, 2009 14 次提交
    • M
      virtio-net: fix data corruption with OOM · 03f191ba
      Michael S. Tsirkin 提交于
      virtio net used to unlink skbs from send queues on error,
      but ever since 48925e37
      we do not do this. This causes guest data corruption and crashes
      with vhost since net core can requeue the skb or free it without
      it being taken off the list.
      
      This patch fixes this by queueing the skb after successful
      transmit.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      03f191ba
    • B
      sfc: Set ip_summed correctly for page buffers passed to GRO · 345056af
      Ben Hutchings 提交于
      Page buffers containing packets with an incorrect checksum or using a
      protocol not handled by hardware checksum offload were previously not
      passed to LRO.  The conversion to GRO changed this, but did not set
      the ip_summed value accordingly.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      345056af
    • M
      cnic: Fix L2CTX_STATUSB_NUM offset in context memory. · d0549382
      Michael Chan 提交于
      The BNX2_L2CTX_STATUSB_NUM definition needs to be changed to match
      the recent firmware update:
      
      commit 078b0735
      bnx2: Update firmware to 5.0.0.j3.
      
      Without the fix, bnx2 can crash intermittently in bnx2_rx_int() when
      iSCSI is enabled.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NBenjamin Li <benli@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d0549382
    • B
      MAINTAINERS: rt2x00 list is moderated · 83fc9c89
      Bartlomiej Zolnierkiewicz 提交于
      Cc: users@rt2x00.serialmonkey.com
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      83fc9c89
    • R
      airo: Reorder tests, check bounds before element · 30bd5726
      Roel Kluin 提交于
      Test whether index is within bounds before reading the element
      Signed-off-by: NRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      30bd5726
    • B
      mac80211: fix for incorrect sequence number on hostapd injected frames · 9b1ce526
      Björn Smedman 提交于
      When hostapd injects a frame, e.g. an authentication or association
      response, mac80211 looks for a suitable access point virtual interface
      to associate the frame with based on its source address. This makes it
      possible e.g. to correctly assign sequence numbers to the frames.
      
      A small typo in the ethernet address comparison statement caused a
      failure to find a suitable ap interface. Sequence numbers on such
      frames where therefore left unassigned causing some clients
      (especially windows-based 11b/g clients) to reject them and fail to
      authenticate or associate with the access point. This patch fixes the
      typo in the address comparison statement.
      Signed-off-by: NBjörn Smedman <bjorn.smedman@venatech.se>
      Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9b1ce526
    • H
      libertas spi: fix sparse errors · d18ba452
      Holger Schurig 提交于
      This fixes the following sparse warnings:
      
      $ make modules SUBDIRS=drivers/net/wireless/libertas C=1 CF=-D__CHECK_ENDIAN__
      make: Entering directory `/usr/src/linux-wl'
        CHECK   drivers/net/wireless/libertas/if_spi.c
      drivers/net/wireless/libertas/if_spi.c:137:16: warning: incorrect type in initializer (different base types)
      drivers/net/wireless/libertas/if_spi.c:137:16:    expected unsigned short [unsigned] [usertype] reg_out
      drivers/net/wireless/libertas/if_spi.c:137:16:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:191:16: warning: incorrect type in initializer (different base types)
      drivers/net/wireless/libertas/if_spi.c:191:16:    expected unsigned short [unsigned] [usertype] reg_out
      drivers/net/wireless/libertas/if_spi.c:191:16:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:256:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:256:24:    expected restricted __le32 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:256:24:    got unsigned int *<noident>
      drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
      drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
      drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
      drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
      Signed-off-by: NHolger Schurig <hs4233@mail.mn-solutions.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d18ba452
    • A
      mac80211: trivial: fix spelling in mesh_hwmp · f99288d1
      Andrey Yurovsky 提交于
      Fix a typo in the description of hwmp_route_info_get(), no function
      changes.
      Signed-off-by: NAndrey Yurovsky <andrey@cozybit.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f99288d1
    • J
      cfg80211: sme: deauthenticate on assoc failure · 7d930bc3
      Johannes Berg 提交于
      When the in-kernel SME gets an association failure from
      the AP we don't deauthenticate, and thus get into a very
      confused state which will lead to warnings later on. Fix
      this by actually deauthenticating when the AP indicates
      an association failure.
      
      (Brought to you by the hacking session at Kernel Summit 2009 in Tokyo,
      Japan. -- JWL)
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7d930bc3
    • J
      mac80211: keep auth state when assoc fails · 2ef6e444
      Johannes Berg 提交于
      When association fails, we should stay authenticated,
      which in mac80211 is represented by the existence of
      the mlme work struct, so we cannot free that, instead
      we need to just set it to idle.
      
      (Brought to you by the hacking session at Kernel Summit 2009 in Tokyo,
      Japan. -- JWL)
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2ef6e444
    • R
      mac80211: fix ibss joining · d419b9f0
      Reinette Chatre 提交于
      Recent commit "mac80211: fix logic error ibss merge bssid check" fixed
      joining of ibss cell when static bssid is provided. In this case
      ifibss->bssid is set before the cell is joined and comparing that address
      to a bss should thus always succeed. Unfortunately this change broke the
      other case of joining a ibss cell without providing a static bssid where
      the value of ifibss->bssid is not set before the cell is joined.
      
      Since ifibss->bssid may be set before or after joining the cell we do not
      learn anything by comparing it to a known bss. Remove this check.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d419b9f0
    • M
      b43: add 'struct b43_wl' missing declaration · e6693eab
      Miguel Boton 提交于
      'struct b43_wl' declaration is missing at 'leds.h'.
      It should be declared to avoid getting some GCC warnings at 'b43_leds_unregister'.
      Signed-off-by: NMiguel Botón <mboton@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e6693eab
    • L
      b43: Fix Bugzilla #14181 and the bug from the previous 'fix' · d50bae33
      Larry Finger 提交于
      "b43: Fix PPC crash in rfkill polling on unload" fixed the bug reported
      in Bugzilla No. 14181; however, it introduced a new bug. Whenever the
      radio switch was turned off, it was necessary to unload and reload
      the driver for it to recognize the switch again.
      
      This patch fixes both the original bug in #14181 and the bug introduced by
      the previous patch. It must be stated, however, that if there is a BCM4306/3
      with an rfkill switch (not yet proven), then the driver will need an
      unload/reload cycle to turn the device back on.
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d50bae33
    • B
  3. 27 10月, 2009 10 次提交
  4. 24 10月, 2009 4 次提交
  5. 23 10月, 2009 9 次提交
新手
引导
客服 返回
顶部