05 Jun, 2008

40 commits

  • This adds support for EMC Clariions. This patch has the features that
    currently exists in mainline and advanced features from Ed's patches.

    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Chandra Seetharaman
     
  • This patch provides the device handler to support the older hp boxes
    which cannot be upgraded.

    Signed-off-by: Mike Christie
    Signed-off-by: Chandra Seetharaman
    Signed-off-by: James Bottomley

    Mike Christie
     
  • This patch provides the device handler to support the LSI RDAC SCSI
    based storage devices.

    Signed-off-by: Chandra Seetharaman
    Signed-off-by: James Bottomley

    Chandra Seetharaman
     
  • Some of the storage devices (that can be accessed through multiple paths),
    do need some special handling for
    1. Activating the passive path of the storage access.
    2. Decode and handle the special sense codes returned by the devices.
    3. Handle the I/Os being sent to the passive path, especially
    during the device probe time.
    when accessed through multiple paths.

    As of today this special device handling is done at the dm-multipath
    layer using dm-handlers. That works well for (1); for (2) to be handled
    at dm layer, scsi sense information need to be exported from SCSI to dm-layer,
    which is not very attractive; (3) cannot be done at all at the dm layer.

    Device handler has been moved to SCSI mainly to handle (2) and (3) properly.

    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Mike Anderson
    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Chandra Seetharaman
     
  • Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (56 commits)
    l2tp: Fix possible oops if transmitting or receiving when tunnel goes down
    tcp: Fix for race due to temporary drop of the socket lock in skb_splice_bits.
    tcp: Increment OUTRSTS in tcp_send_active_reset()
    raw: Raw socket leak.
    lt2p: Fix possible WARN_ON from socket code when UDP socket is closed
    USB ID for Philips CPWUA054/00 Wireless USB Adapter 11g
    ssb: Fix context assertion in ssb_pcicore_dev_irqvecs_enable
    libertas: fix command size for CMD_802_11_SUBSCRIBE_EVENT
    ipw2200: expire and use oldest BSS on adhoc create
    airo warning fix
    b43legacy: Fix controller restart crash
    sctp: Fix ECN markings for IPv6
    sctp: Flush the queue only once during fast retransmit.
    sctp: Start T3-RTX timer when fast retransmitting lowest TSN
    sctp: Correctly implement Fast Recovery cwnd manipulations.
    sctp: Move sctp_v4_dst_saddr out of loop
    sctp: retran_path update bug fix
    tcp: fix skb vs fack_count out-of-sync condition
    sunhme: Cleanup use of deprecated calls to save_and_cli and restore_flags.
    xfrm: xfrm_algo: correct usage of RIPEMD-160
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
    sparc: switch /proc/led to seq_file
    sparc64: IO accessors fix

    Linus Torvalds
     
  • Some problems have been experienced in the field which cause an oops
    in the pppol2tp driver if L2TP tunnels fail while passing data.

    The pppol2tp driver uses private data that is referenced via the
    sk->sk_user_data of its UDP and PPPoL2TP sockets. This patch makes
    sure that the driver uses sock_hold() when it holds a reference to the
    sk pointer. This affects its sendmsg(), recvmsg(), getname(),
    [gs]etsockopt() and ioctl() handlers.

    Tested by ISP where problem was seen. System has been up 10 days with
    no oops since running this patch. Without the patch, an oops would
    occur every 1-2 days.

    Signed-off-by: James Chapman
    Signed-off-by: David S. Miller

    James Chapman
     
  • skb_splice_bits temporary drops the socket lock while iterating over
    the socket queue in order to break a reverse locking condition which
    happens with sendfile. This, however, opens a window of opportunity
    for tcp_collapse() to aggregate skbs and thus potentially free the
    current skb used in skb_splice_bits and tcp_read_sock.

    This patch fixes the problem by (re-)getting the same "logical skb"
    after the lock has been temporary dropped.

    Based on idea and initial patch from Evgeniy Polyakov.

    Signed-off-by: Octavian Purdila
    Acked-by: Evgeniy Polyakov
    Signed-off-by: David S. Miller

    Octavian Purdila
     
  • TCP "resets sent" counter is not incremented when a TCP Reset is
    sent via tcp_send_active_reset().

    Signed-off-by: Sridhar Samudrala
    Signed-off-by: David S. Miller

    Sridhar Samudrala
     
  • The program below just leaks the raw kernel socket

    int main() {
    int fd = socket(PF_INET, SOCK_RAW, IPPROTO_UDP);
    struct sockaddr_in addr;

    memset(&addr, 0, sizeof(addr));
    inet_aton("127.0.0.1", &addr.sin_addr);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(2048);
    sendto(fd, "a", 1, MSG_MORE, &addr, sizeof(addr));
    return 0;
    }

    Corked packet is allocated via sock_wmalloc which holds the owner socket,
    so one should uncork it and flush all pending data on close. Do this in the
    same way as in UDP.

    Signed-off-by: Denis V. Lunev
    Acked-by: Alexey Kuznetsov
    Signed-off-by: David S. Miller

    Denis V. Lunev
     
  • If an L2TP daemon closes a tunnel socket while packets are queued in
    the tunnel's reorder queue, a kernel warning is logged because the
    socket is closed while skbs are still referencing it. The fix is to
    purge the queue in the socket's release handler.

    WARNING: at include/net/sock.h:351 udp_lib_unhash+0x41/0x68()
    Pid: 12998, comm: openl2tpd Not tainted 2.6.25 #8
    [] warn_on_slowpath+0x41/0x51
    [] udp_lib_unhash+0x41/0x68
    [] sk_common_release+0x23/0x90
    [] udp_lib_close+0x8/0xa
    [] inet_release+0x42/0x48
    [] sock_release+0x14/0x60
    [] sock_close+0x29/0x30
    [] __fput+0xad/0x15b
    [] fput+0x17/0x19
    [] filp_close+0x50/0x5a
    [] sys_close+0x69/0x9f
    [] syscall_call+0x7/0xb

    Signed-off-by: James Chapman
    Signed-off-by: David S. Miller

    James Chapman
     
  • David S. Miller
     
  • Enable the Philips CPWUA054/00 in p54usb.

    Cc: Jeff Garzik
    Signed-off-by: Andrew Morton
    Signed-off-by: John W. Linville

    Felix Homann
     
  • This fixes a context assertion in ssb that makes b44 print
    out warnings on resume.

    This fixes the following kernel oops:
    http://www.kerneloops.org/oops.php?number=12732
    http://www.kerneloops.org/oops.php?number=11410

    Signed-off-by: Michael Buesch
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • The size was two small by two bytes.

    Signed-off-by: Holger Schurig
    Signed-off-by: John W. Linville

    Holger Schurig
     
  • If there are no networks on the free list, expire the oldest one when
    creating a new adhoc network. Because ipw2200 and the ieee80211 stack
    don't actually cull old networks and place them back on the free list
    unless they are needed for new probe responses, over time the free list
    would become empty and creating an adhoc network would fail due to the !
    list_empty(...) check.

    Signed-off-by: Dan Williams
    Signed-off-by: John W. Linville

    Dan Williams
     
  • WARNING: space prohibited between function name and open parenthesis '('
    #22: FILE: drivers/net/wireless/airo.c:2907:
    + while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {

    total: 0 errors, 1 warnings, 8 lines checked

    ./patches/wireless-airo-waitbusy-wont-delay.patch has style problems, please review. If any of these errors
    are false positives report them to the maintainer, see
    CHECKPATCH in MAINTAINERS.

    Please run checkpatch prior to sending patches

    Cc: Dan Williams
    Cc: Roel Kluin
    Signed-off-by: Andrew Morton
    Signed-off-by: John W. Linville

    Andrew Morton
     
  • This fixes a kernel crash on rmmod, in the case where the controller
    was restarted before doing the rmmod.

    Signed-off-by: Michael Buesch
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • Commit e9df2e8fd8fbc95c57dbd1d33dada66c4627b44c ("[IPV6]: Use
    appropriate sock tclass setting for routing lookup.") also changed the
    way that ECN capable transports mark this capability in IPv6. As a
    result, SCTP was not marking ECN capablity because the traffic class
    was never set. This patch brings back the markings for IPv6 traffic.

    Signed-off-by: Vlad Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • When fast retransmit is triggered by a sack, we should flush the queue
    only once so that only 1 retransmit happens. Also, since we could
    potentially have non-fast-rtx chunks on the retransmit queue, we need
    make sure any chunks eligable for fast retransmit are sent first
    during fast retransmission.

    Signed-off-by: Vlad Yasevich
    Tested-by: Wei Yongjun
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • When we are trying to fast retransmit the lowest outstanding TSN, we
    need to restart the T3-RTX timer, so that subsequent timeouts will
    correctly tag all the packets necessary for retransmissions.

    Signed-off-by: Vlad Yasevich
    Tested-by: Wei Yongjun
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • Correctly keep track of Fast Recovery state and do not reduce
    congestion window multiple times during sucht state.

    Signed-off-by: Vlad Yasevich
    Tested-by: Wei Yongjun
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • There's no need to execute sctp_v4_dst_saddr() for each
    iteration, just move it out of loop.

    Signed-off-by: Gui Jianfeng
    Signed-off-by: Vlad Yasevich
    Signed-off-by: David S. Miller

    Gui Jianfeng
     
  • If the current retran_path is the only active one, it should
    update it to the the next inactive one.

    Signed-off-by: Gui Jianfeng
    Signed-off-by: Vlad Yasevich
    Signed-off-by: David S. Miller

    Gui Jianfeng
     
  • David S. Miller
     
  • This bug is able to corrupt fackets_out in very rare cases.
    In order for this to cause corruption:
    1) DSACK in the middle of previous SACK block must be generated.
    2) In order to take that particular branch, part or all of the
    DSACKed segment must already be SACKed so that we have that
    in cache in the first place.
    3) The new info must be top enough so that fackets_out will be
    updated on this iteration.
    ...then fack_count is updated while skb wasn't, then we walk again
    that particular segment thus updating fack_count twice for
    a single skb and finally that value is assigned to fackets_out
    by tcp_sacktag_one.

    It is safe to call tcp_sacktag_one just once for a segment (at
    DSACK), no need to call again for plain SACK.

    Potential problem of the miscount are limited to premature entry
    to recovery and to inflated reordering metric (which could even
    cancel each other out in the most the luckiest scenarios :-)).
    Both are quite insignificant in worst case too and there exists
    also code to reset them (fackets_out once sacked_out becomes zero
    and reordering metric on RTO).

    This has been reported by a number of people, because it occurred
    quite rarely, it has been very evasive. Andy Furniss was able to
    get it to occur couple of times so that a bit more info was
    collected about the problem using a debug patch, though it still
    required lot of checking around. Thanks also to others who have
    tried to help here.

    This is listed as Bugzilla #10346. The bug was introduced by
    me in commit 68f8353b48 ([TCP]: Rewrite SACK block processing &
    sack_recv_cache use), I probably thought back then that there's
    need to scan that entry twice or didn't dare to make it go
    through it just once there. Going through twice would have
    required restoring fack_count after the walk but as noted above,
    I chose to drop the additional walk step altogether here.

    Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     
  • Make use of local_irq_save and local_irq_restore rather then the
    deprecated save_and_cli and restore_flags calls.

    Signed-off-by: Mark Asselstine
    Signed-off-by: David S. Miller

    Mark Asselstine
     
  • This patch fixes the usage of RIPEMD-160 in xfrm_algo which in turn
    allows hmac(rmd160) to be used as authentication mechanism in IPsec
    ESP and AH (see RFC 2857).

    Signed-off-by: Adrian-Ken Rueegsegger
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Adrian-Ken Rueegsegger
     
  • Signed-off-by: Denis V. Lunev
    Signed-off-by: YOSHIFUJI Hideaki

    Denis V. Lunev
     
  • IPv6 UDP sockets wth IPv4 mapped address use udp_sendmsg to send the data
    actually. In this case ip_flush_pending_frames should be called instead
    of ip6_flush_pending_frames.

    Signed-off-by: Denis V. Lunev
    Signed-off-by: YOSHIFUJI Hideaki

    Denis V. Lunev
     
  • It is not allowed to change underlying protocol for
    int fd = socket(PF_INET6, SOCK_RAW, IPPROTO_UDP);

    Signed-off-by: Denis V. Lunev
    Signed-off-by: YOSHIFUJI Hideaki

    Denis V. Lunev
     
  • Signed-off-by: YOSHIFUJI Hideaki

    YOSHIFUJI Hideaki
     
  • The outgoing interface index (ipi6_ifindex) in IPV6_PKTINFO
    ancillary data, is not checked if the source address (ipi6_addr)
    is unspecified. If the ipi6_ifindex is the not-exist interface,
    it should be fail.

    Based on patch from Shan Wei and
    Brian Haley .

    Signed-off-by: Shan Wei
    Signed-off-by: Brian Haley
    Signed-off-by: YOSHIFUJI Hideaki

    YOSHIFUJI Hideaki
     
  • If get destination options with length which is not enough for that
    option,getsockopt() will still return the real length of the option,
    which is larger then the buffer space.
    This is because ipv6_getsockopt_sticky() returns the real length of
    the option.

    This patch fix this problem.

    Signed-off-by: Yang Hongyang
    Signed-off-by: YOSHIFUJI Hideaki

    Yang Hongyang
     
  • If we pass NULL data buffer to getsockopt(), it will return 0,
    and the option length is set to -EFAULT:
    getsockopt(sk, IPPROTO_IPV6, IPV6_DSTOPTS, NULL, &len);

    This is because ipv6_getsockopt_sticky() will return -EFAULT or
    -EINVAL if some error occur.

    This patch fix this problem.

    Signed-off-by: Yang Hongyang
    Signed-off-by: YOSHIFUJI Hideaki

    Yang Hongyang
     
  • - Allow longer lifetimes (>= 0x7fffffff/HZ) on 64bit archs
    by using unsigned long.
    - Shadow this arithmetic overflow workaround by introducing
    helper functions: addrconf_timeout_fixup() and
    addrconf_finite_timeout().

    Signed-off-by: YOSHIFUJI Hideaki

    YOSHIFUJI Hideaki
     
  • Signed-off-by: YOSHIFUJI Hideaki

    YOSHIFUJI Hideaki
     
  • I discover a strange behavior in [ipv4 in ipv6] tunnel. When IPv6 tunnel
    payload is less than 40(0x28), packet can be sent to network, received in
    physical interface, but not seen in IP tunnel interface. No counter increase
    in tunnel interface.

    Signed-off-by: YOSHIFUJI Hideaki

    Colin
     
  • As of now, the prefix length is not vaildated when adding or deleting
    addresses. The value is passed directly into the inet6_ifaddr structure
    and later passed on to memcmp() as length indicator which relies on
    the value never to exceed 128 (bits).

    Due to the missing check, the currently code allows for any 8 bit
    value to be passed on as prefix length while using the netlink
    interface, and any 32 bit value while using the ioctl interface.

    [Use unsigned int instead to generate better code - yoshfuji]

    Signed-off-by: Thomas Graf
    Signed-off-by: YOSHIFUJI Hideaki

    Thomas Graf